Поиск по сайту:

Как установить и использовать PostgreSQL в Ubuntu 18.04


Введение

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

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

В этом руководстве показано, как установить Postgres на экземпляре VPS Ubuntu 18.04, а также приведены инструкции по базовому администрированию базы данных.

Предпосылки

Чтобы следовать этому руководству, вам понадобится один сервер Ubuntu 18.04, настроенный в соответствии с нашим руководством по начальной настройке сервера для Ubuntu 18.04. После завершения этого обязательного руководства на вашем сервере должен быть пользователь без полномочий root с разрешениями sudo и базовым брандмауэром.

Шаг 1 — Установка PostgreSQL

Репозитории Ubuntu по умолчанию содержат пакеты Postgres, поэтому вы можете установить их с помощью системы пакетов apt.

Поскольку вы впервые используете apt в этом сеансе, обновите локальный индекс пакетов. Затем установите пакет Postgres вместе с пакетом -contrib, который добавляет некоторые дополнительные утилиты и функции:

  1. sudo apt update
  2. sudo apt install postgresql postgresql-contrib

Убедитесь, что сервер запущен с помощью команды systemctl start:

  1. sudo systemctl start postgresql.service

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

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

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

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

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

Есть несколько способов использовать эту учетную запись для доступа к Postgres.

Переключение на учетную запись postgres

Переключитесь на учетную запись postgres на своем сервере, набрав:

  1. sudo -i -u postgres

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

  1. psql

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

Выйдите из командной строки PostgreSQL, набрав:

  1. \q

Это вернет вас к командной строке postgres Linux.

Доступ к приглашению Postgres без переключения учетных записей

В последнем примере вам было предложено перейти к приглашению Postgres, сначала переключившись на пользователя postgres, а затем запустив psql, чтобы открыть приглашение Postgres. В качестве альтернативы вы можете сделать это за один шаг, выполнив единственную команду psql от имени пользователя postgres с помощью sudo, например:

  1. sudo -u postgres psql

Это позволит вам напрямую войти в Postgres без промежуточной оболочки bash между ними.

Опять же, вы можете выйти из интерактивного сеанса Postgres, набрав:

  1. \q

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

Шаг 3 — Создание новой роли

В настоящее время у вас просто настроена роль postgres в базе данных. Вы можете создавать новые роли из командной строки с помощью команды createrole. Флаг --interactive предложит вам ввести имя новой роли, а также спросит, должны ли у нее быть права суперпользователя.

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

  1. createuser --interactive

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

  1. sudo -u postgres createuser --interactive

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

Сначала вам будет предложено указать имя для новой роли. В следующем примере роль называется sammy, но вы можете назвать свою роль как угодно:

Output
Enter name of role to add: sammy

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

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

Output
Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

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

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

  1. man createuser

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

Шаг 4 — Создание новой базы данных

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

Это означает, что если пользователя, которого вы создали в последнем разделе, зовут sammy, эта роль попытается подключиться к базе данных, которая по умолчанию также называется «sammy». Вы можете создать соответствующую базу данных с помощью createdb команда.

Если вы вошли в систему как учетная запись postgres, вы должны ввести что-то вроде:

  1. createdb sammy

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

  1. sudo -u postgres createdb sammy

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

Шаг 5 — Открытие командной строки Postgres с новой ролью

Чтобы войти с аутентификацией на основе ident, вам понадобится пользователь Linux с тем же именем, что и у вашей роли и базы данных Postgres.

Если у вас нет соответствующего пользователя Linux, вы можете создать его с помощью команды adduser. Вам нужно будет сделать это из своей учетной записи без полномочий root с привилегиями sudo (это означает, что вы не вошли в систему как пользователь postgres):

  1. sudo adduser sammy

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

  1. sudo -i -u sammy
  2. psql

Или вы можете сделать это встроенным:

  1. sudo -u sammy psql

Эта команда автоматически войдет в систему, предполагая, что все компоненты настроены правильно.

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

  1. psql -d postgres

После входа в систему вы можете проверить текущую информацию о подключении, набрав:

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

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

Шаг 6 — Создание и удаление таблиц

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

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

Основной синтаксис этой команды следующий:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

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

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

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

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

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

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

Следующие две команды создают столбцы для оборудования type и color соответственно, каждый из которых не может быть пустым (как указано в применяемом ограничении NOT NULL). для каждого). Строка после них создает столбец location и добавляет ограничение, требующее, чтобы значения этого столбца были одним из восьми возможных значений. Последняя строка в круглых скобках создает столбец date, в котором записывается дата установки оборудования.

Обратите внимание, что в SQL каждый оператор должен заканчиваться точкой с запятой (;).

Если вы правильно ввели операцию CREATE TABLE, она вернет следующий вывод:

Output
CREATE TABLE

Вы можете найти список таблиц в этой базе данных, набрав:

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

Ваша игровая таблица находится здесь, но есть также что-то под названием playground_equip_id_seq типа sequence. Это представление типа serial, которое вы указали в столбце equip_id. Это отслеживает следующее число в последовательности и создается автоматически для столбцов этого типа.

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

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

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

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

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

  1. INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
  2. INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');

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

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

Получите информацию, которую вы добавили, набрав:

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

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

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

  1. DELETE FROM playground WHERE type = 'slide';

Снова запросите таблицу:

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

Обратите внимание, что ваш слайд больше не является частью таблицы.

Шаг 8 — Добавление и удаление столбцов из таблицы

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

  1. ALTER TABLE playground ADD last_maint date;

В следующий раз, когда вы снова просмотрите информацию о своей таблице, новый столбец будет добавлен (но данные не будут введены):

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

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

  1. ALTER TABLE playground DROP last_maint;

При этом удаляется столбец last_maint и все найденные в нем значения, но все остальные данные остаются нетронутыми.

Шаг 9 — Обновление данных в таблице

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

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

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

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

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

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

Заключение

Теперь вы настроили PostgreSQL на своем сервере Ubuntu 18.04. Однако с Postgres предстоит еще еще много узнать. Вот еще несколько руководств по использованию Postgres:

  • Сравнение систем управления реляционными базами данных
  • Узнайте, как создавать таблицы и управлять ими с помощью Postgres
  • Научитесь лучше управлять ролями и разрешениями
  • Создавайте запросы в Postgres с помощью Select
  • Узнайте, как защитить PostgreSQL
  • Узнайте, как сделать резервную копию базы данных Postgres