Как установить и использовать PostgreSQL на CentOS 7

Вступление

Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они предоставляют структурированный способ хранения, организации и доступа к информации.

  • PostgreSQL *, или Postgres, - это система управления реляционными базами данных, которая обеспечивает реализацию языка запросов SQL. Это популярный выбор для многих малых и крупных проектов. Его преимущество состоит в том, что он соответствует стандартам и имеет много продвинутых функций, таких как надежные транзакции и параллелизм без блокировок чтения.

В этом руководстве мы покажем, как установить Postgres на CentOS 7, и рассмотрим некоторые основные способы его использования.

Монтаж

Репозитории CentOS по умолчанию содержат пакеты Postgres, поэтому мы можем установить их без проблем, используя систему пакетов + yum +.

Установите пакет postgresql-server и пакет contrib, который добавляет некоторые дополнительные утилиты и функциональность:

sudo yum install postgresql-server postgresql-contrib

Примите приглашение, ответив + y +.

Теперь, когда наше программное обеспечение установлено, нам нужно выполнить несколько шагов, прежде чем мы сможем его использовать.

Создайте новый кластер базы данных PostgreSQL:

sudo postgresql-setup initdb

По умолчанию PostgreSQL не разрешает аутентификацию по паролю. Мы изменим это, отредактировав его конфигурацию на основе хоста (HBA).

Откройте конфигурацию HBA в вашем любимом текстовом редакторе. Мы будем использовать vi:

sudo vi /var/lib/pgsql/data/pg_hba.conf

Найдите строки, которые выглядят следующим образом, в нижней части файла:

выдержка из pg_hba.conf (оригинал)

host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

Затем замените «идент» на «md5», чтобы они выглядели так:

выдержка из pg_hba.conf (обновлено)

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Сохранить и выйти. PostgreSQL теперь настроен для разрешения аутентификации по паролю.

Теперь запустите и включите PostgreSQL:

sudo systemctl start postgresql
sudo systemctl enable postgresql

PostgreSQL теперь готов к использованию. Мы можем обсудить, как это работает и чем оно может отличаться от аналогичных систем управления базами данных, которые вы, возможно, использовали.

Использование ролей и баз данных PostgreSQL

По умолчанию Postgres использует концепцию, называемую «роли», для помощи в аутентификации и авторизации. В некотором смысле они похожи на обычные учетные записи в стиле Unix, но Postgres не делает различий между пользователями и группами и вместо этого предпочитает более гибкий термин «роль».

После установки Postgres настроен на использование «аутентификации» для аутентификации, что означает, что он связывает роли Postgres с соответствующей системной учетной записью Unix / Linux. Если существует роль Postgres, ее можно войти, войдя в соответствующую системную учетную запись Linux.

Процедура установки создала учетную запись пользователя с именем + postgres +, которая связана с ролью Postgres по умолчанию. Чтобы использовать Postgres, нам нужно войти в эту учетную запись. Вы можете сделать это, набрав:

sudo -i -u postgres

Вам будет задан вопрос о вашем обычном пользовательском пароле, а затем будет выдан запрос оболочки для пользователя + postgres +.

Вы можете сразу получить приглашение Postgres, набрав:

psql

Вы будете автоматически авторизованы и сможете сразу взаимодействовать с системой управления базами данных.

Однако мы собираемся немного рассказать о том, как использовать другие роли и базы данных, чтобы у вас была некоторая гибкость в отношении того, с каким пользователем и базой данных вы хотите работать.

Выйдите из приглашения PostgreSQL, набрав:

\q

Теперь вы должны вернуться в командную строку пользователя + postgres +.

Создать новую роль

От учетной записи Linux + postgres + у вас есть возможность войти в систему базы данных. Однако мы также собираемся продемонстрировать, как создавать дополнительные роли. Учетная запись Linux + postgres +, связанная с административной ролью Postgres, имеет доступ к некоторым утилитам для создания пользователей и баз данных.

Мы можем создать новую роль, набрав:

createuser --interactive

По сути, это интерактивный скрипт оболочки, который вызывает правильные команды Postgres для создания пользователя в соответствии с вашими требованиями. Он задаст вам только два вопроса: название роли и должен ли он быть суперпользователем. Вы можете получить больше контроля, передав несколько дополнительных флагов. Проверьте параметры, посмотрев на страницу + man +:

man createuser

Создать новую базу данных

Способ, которым Postgres настроен по умолчанию (проверка подлинности ролей, запрашиваемых соответствующими системными учетными записями), также предполагает, что для роли, к которой будет подключаться, будет существовать соответствующая база данных.

Поэтому, если у меня есть пользователь с именем + test1 +, эта роль будет пытаться подключиться к базе данных с именем + test1 + по умолчанию.

Вы можете создать соответствующую базу данных, просто вызвав эту команду как пользователь + postgres +:

createdb

Подключитесь к Postgres с новым пользователем

Давайте предположим, что у вас есть системная учетная запись Linux с именем + test1 + (вы можете создать ее, набрав: + sudo adduser test1 +), и что вы создали роль Postgres и базу данных, также называемую + test1 +.

Вы можете перейти на системную учетную запись Linux, набрав:

sudo -i -u

Затем вы можете подключиться к базе данных + test1 + как роль + test1 + Postgres, набрав:

psql

При этом будет выполнен автоматический вход, если все компоненты настроены.

Если вы хотите, чтобы ваш пользователь подключался к другой базе данных, вы можете сделать это, указав базу данных следующим образом (убедитесь, что вы + \ q + в командной строке):

psql -d

Вы можете получить информацию о пользователе Postgres, в который вы вошли, и о базе данных, к которой вы сейчас подключены, набрав:

\conninfo
Output:You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

Это может помочь напомнить вам о ваших текущих настройках, если вы подключаетесь к базам данных не по умолчанию или с пользователями не по умолчанию.

Создать и удалить таблицы

Теперь, когда вы знаете, как подключиться к системе баз данных PostgreSQL, мы начнем с того, как выполнить некоторые основные задачи.

Во-первых, давайте создадим таблицу для хранения некоторых данных. Давайте создадим таблицу, которая описывает игровое оборудование.

Основной синтаксис этой команды примерно такой:

CREATE TABLE  (
    () ,
    (),
    ()
);

Как вы можете видеть, мы даем таблице имя, а затем определяем столбцы, которые нам нужны, а также тип столбца и максимальную длину данных поля. Мы также можем при желании добавить ограничения таблицы для каждого столбца.

Вы можете узнать больше о how для создания и управления таблицами в Postgres Вот.

Для наших целей мы собираемся создать простую таблицу, подобную этой:

CREATE TABLE playground (
   equip_id serial PRIMARY KEY,
   type varchar (50) NOT NULL,
   color varchar (25) NOT NULL,
   location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
   install_date date
);

Мы сделали игровой стол, который инвентаризирует имеющееся у нас оборудование. Это начинается с идентификатора оборудования, который имеет тип + serial +. Этот тип данных является автоинкрементным целым числом. Мы дали этому столбцу ограничение + первичный ключ +, что означает, что значения должны быть уникальными, а не нулевыми.

Для двух наших столбцов мы не указали длину поля. Это связано с тем, что некоторые типы столбцов не требуют заданной длины, поскольку длина подразумевается типом.

Затем мы даем столбцы для типа и цвета оборудования, каждый из которых не может быть пустым. Затем мы создаем столбец местоположения и создаем ограничение, которое требует, чтобы значение было одним из восьми возможных значений. Последний столбец - это столбец даты, в котором записана дата, когда мы установили оборудование.

Мы можем увидеть нашу новую таблицу, набрав это:

\d
Output:                   List of relations
Schema |          Name           |   Type   |  Owner
--------+-------------------------+----------+----------
public | playground              | table    | postgres
public | playground_equip_id_seq | sequence | postgres
(2 rows)

Как вы можете видеть, у нас есть таблица игровых площадок, но у нас также есть нечто с именем + plays_equip_id_seq + типа + sequence +. Это представление «серийного» типа, который мы дали нашему столбцу + equip_id +. Это отслеживает следующий номер в последовательности.

Если вы хотите увидеть только таблицу, вы можете набрать:

\dt
Output:           List of relations
Schema |    Name    | Type  |  Owner
--------+------------+-------+----------
public | playground | table | postgres
(1 row)

Добавить, запрос и удаление данных в таблице

Теперь, когда у нас есть созданная таблица, мы можем вставить в нее некоторые данные.

Давайте добавим слайд и качели. Мы делаем это, вызывая таблицу, к которой мы хотим добавить, присваивая имена столбцам и затем предоставляя данные для каждого столбца. Наш слайд и свинг можно добавить так:

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

Вы должны заметить несколько вещей. Во-первых, имейте в виду, что имена столбцов не должны заключаться в кавычки, но вводимый вами столбец values требует кавычек.

Следует также помнить, что мы не вводим значение для столбца + equip_id +. Это потому, что это генерируется автоматически при создании новой строки в таблице.

Затем мы можем вернуть добавленную информацию, набрав:

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       1 | slide | blue   | south     | 2014-04-28
       2 | swing | yellow | northwest | 2010-08-16
(2 rows)

Здесь вы можете видеть, что наш + equip_id + был успешно заполнен и что все остальные наши данные были организованы правильно.

Если наш слайд разрывается, и мы удаляем его с игровой площадки, мы также можем удалить строку из нашей таблицы, набрав:

DELETE FROM playground WHERE type = 'slide';

Если мы снова запросим нашу таблицу, мы увидим, что наш слайд больше не является частью таблицы:

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date
----------+-------+--------+-----------+--------------
       2 | swing | yellow | northwest | 2010-08-16
(1 row)

Как добавить и удалить столбцы из таблицы

Если мы хотим изменить таблицу после ее создания, чтобы добавить дополнительный столбец, мы можем легко это сделать.

Мы можем добавить столбец, чтобы показать последний визит для технического обслуживания для каждой единицы оборудования, набрав:

ALTER TABLE playground ADD last_maint date;

Если вы снова просмотрите информацию о своей таблице, вы увидите, что новый столбец был добавлен (но данные не были введены):

SELECT * FROM playground;
Output: equip_id | type  | color  | location  | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
       2 | swing | yellow | northwest | 2010-08-16   |
(1 row)

Мы можем удалить столбец так же легко. Если мы обнаружим, что наша рабочая группа использует отдельный инструмент для отслеживания истории обслуживания, мы можем избавиться от столбца, набрав здесь:

ALTER TABLE playground DROP last_maint;

Как обновить данные в таблице

Мы знаем, как добавлять записи в таблицу и как их удалять, но мы еще не рассмотрели, как изменить существующие записи.

Вы можете обновить значения существующей записи, запросив нужную запись и установив в столбце значение, которое вы хотите использовать. Мы можем запросить запись «swing» (это будет соответствовать every swing в нашей таблице) и изменить ее цвет на «red». Это может быть полезно, если мы покрасим его:

UPDATE playground SET color = 'red' WHERE type = 'swing';

Мы можем проверить, что операция прошла успешно, снова запросив наши данные:

SELECT * FROM playground;
Output: equip_id | type  | color | location  | install_date
----------+-------+-------+-----------+--------------
       2 | swing | red   | northwest | 2010-08-16
(1 row)

Как видите, наш слайд теперь зарегистрирован как красный.

Related