Введение
Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они предоставляют структурированный способ хранения, организации и доступа к информации.
PostgreSQL, или Postgres, является системой управления реляционными базами данных, которая предоставляет реализацию языка запросов SQL. Он соответствует стандартам и имеет множество продвинутых функций, таких как надежные транзакции и параллелизм без блокировки чтения.
Это руководство демонстрирует, как установить Postgres на сервере Ubuntu 22.04. Оно также предоставляет некоторые инструкции по общему администрированию баз данных.
Предварительные требования
Для выполнения этого учебника вам понадобится один сервер Ubuntu 22.04, который был настроен в соответствии с нашим Руководством по начальной настройке сервера для Ubuntu 22.04. После завершения этого руководства по предварительным требованиям на вашем сервере должен быть создан не-root пользователь с правами sudo и базовый брандмауэр.
Шаг 1 — Установка PostgreSQL
В репозиториях по умолчанию Ubuntu содержатся пакеты Postgres, поэтому вы можете установить их, используя систему управления пакетами apt
.
Если вы не делали этого недавно, обновите локальный индекс пакетов сервера:
Затем установите пакет Postgres вместе с пакетом -contrib
, добавляющим дополнительные утилиты и функциональность:
Убедитесь, что сервер работает, используя команду systemctl start
:
Теперь, когда программное обеспечение установлено и работает, мы можем рассмотреть, как оно работает и в чем может отличаться от других систем управления реляционными базами данных, которые вы, возможно, использовали.
Шаг 2 — Использование ролей и баз данных PostgreSQL
По умолчанию Postgres использует концепцию, называемую ролями, для управления аутентификацией и авторизацией. В некотором смысле они похожи на обычные учетные записи в стиле Unix, но Postgres не различает пользователей и группы, а предпочитает более гибкий термин “роль”.
После установки Postgres настроен на использование аутентификации по паре, что означает, что он ассоциирует роли Postgres с соответствующей учетной записью Unix/Linux системы. Если роль существует в Postgres, пользователь Unix/Linux с таким же именем может войти под этой ролью.
При процедуре установки создается учетная запись пользователя с именем postgres, которая связана с ролью Postgres по умолчанию. Чтобы использовать Postgres, вы можете войти в эту учетную запись.
Есть несколько способов использовать эту учетную запись для доступа к Postgres.
Переключение на учетную запись postgres
Переключитесь на учетную запись postgres на вашем сервере, набрав:
Теперь вы можете немедленно получить доступ к приглашению PostgreSQL, набрав:
Оттуда вы можете взаимодействовать с системой управления базами данных по необходимости.
Выйдите из приглашения PostgreSQL, набрав:
Это вернет вас к приглашению командного интерфейса пользователя Linux postgres.
Доступ к приглашению Postgres без переключения учетных записей
Вы также можете выполнять нужную вам команду от имени учетной записи postgres непосредственно с использованием sudo
.
Например, в последнем примере вам было указано перейти к приглашению командной строки Postgres, сначала переключившись на пользователя postgres, а затем запустив psql
для открытия приглашения командной строки Postgres. Вы можете выполнить это за один шаг, запустив одну команду psql
от имени пользователя postgres с помощью sudo
, например, так:
Это позволит вам войти напрямую в Postgres без промежуточного оболочки bash
между ними.
Снова вы можете выйти из интерактивной сессии Postgres, набрав:
Во многих случаях требуется более одной роли Postgres. Чтобы узнать, как это настроить, читайте дальше.
Шаг 3 — Создание новой роли
В настоящее время у вас настроена роль postgres в базе данных. Вы можете создавать новые роли из командной строки с помощью команды createuser
. Флаг --interactive
запросит у вас имя новой роли и также спросит, должны ли у нее быть права суперпользователя.
Если вы вошли в систему под учетной записью postgres, вы можете создать нового пользователя, набрав:
Если же вы предпочитаете использовать sudo
для каждой команды без переключения со своей обычной учетной записи, введите:
Сценарий будет предложит вам несколько вариантов, и, в зависимости от ваших ответов, выполнит правильные команды Postgres для создания пользователя по вашим требованиям.
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Вы можете получить больше контроля, передав некоторые дополнительные флаги. Посмотрите варианты, изучив страницу руководства для команды createuser
:
Теперь ваша установка Postgres имеет нового пользователя, но вы еще не добавили базы данных. Следующий раздел описывает этот процесс.
Шаг 4 — Создание новой базы данных
Еще одно предположение, которое система аутентификации Postgres делает по умолчанию, заключается в том, что для любой роли, используемой для входа, эта роль будет иметь базу данных с тем же именем, к которой она может получить доступ.
Это означает, что если пользователь, созданный в последнем разделе, называется sammy, то эта роль будет пытаться подключиться к базе данных, также называемой “sammy” по умолчанию. Вы можете создать соответствующую базу данных с помощью команды createdb
.
Если вы вошли в систему под учетной записью postgres, вы бы ввели что-то вроде:
Если же вы предпочитаете использовать sudo
для каждой команды без переключения с вашей обычной учетной записи, вы бы ввели:
Эта гибкость предоставляет несколько способов создания баз данных по мере необходимости.
Шаг 5 — Открытие приглашения Postgres с новой ролью
Чтобы войти с использованием аутентификации по паре, вам понадобится пользователь Linux с тем же именем, что и ваша роль Postgres и база данных.
Если у вас нет подходящего пользователя Linux, вы можете создать его с помощью команды adduser
. Вы должны сделать это из своей учетной записи без привилегий root с использованием команды sudo
(то есть, не вошедши как пользователь postgres):
Как только эта новая учетная запись будет доступна, вы можете либо переключиться и подключиться к базе данных, набрав:
Или вы можете сделать это встроенным образом:
Эта команда автоматически войдет в систему, предполагая, что все компоненты были правильно настроены.
Если вы хотите, чтобы ваш пользователь подключался к другой базе данных, вы можете сделать это, указав базу данных следующим образом:
После входа вы можете проверить текущую информацию о подключении, набрав:
OutputYou 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)
);
Эта команда дает таблице имя, а затем определяет столбцы, а также тип столбца и максимальную длину данных поля. По желанию, вы можете добавить ограничения для каждого столбца.
Более подробно о создании таблиц вы можете узнать, следуя нашему руководству по Как создавать и управлять таблицами в SQL.
Для демонстрационных целей создайте следующую таблицу:
Эта команда создаст таблицу, в которой будет отображаться инвентарь игрового оборудования. Первый столбец в таблице будет содержать номера ID оборудования типа serial
, который является автоматически инкрементируемым целым числом. Этот столбец также имеет ограничение PRIMARY KEY
, что означает, что значения в нем должны быть уникальными и не могут быть пустыми.
Следующие две строки создают столбцы для типа оборудования type
и color
соответственно, которые не могут быть пустыми. Строка после них создает столбец location
с ограничением, требующим, чтобы значение было одним из восьми возможных значений. Последняя строка создает столбец date
, который записывает дату установки оборудования.
Для двух столбцов (equip_id
и install_date
) команда не указывает длину поля. Причина в том, что некоторые типы данных не требуют заданной длины, поскольку длина или формат подразумевается.
Ознакомьтесь с вашей новой таблицей, набрав:
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
. Это отслеживает следующий номер в последовательности и создается автоматически для столбцов этого типа.
Если вы хотите просмотреть только таблицу без последовательности, вы можете набрать:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
С таблицей под рукой давайте использовать ее для практики управления данными.
Шаг 7 — Добавление, Запрос и Удаление данных в таблице
Теперь у вас есть таблица, вы можете вставить в нее некоторые данные. В качестве примера добавьте горку и качели, вызвав таблицу, в которую вы хотите добавить, назвав столбцы и затем предоставив данные для каждого столбца, вот так:
Вы должны быть осторожны при вводе данных, чтобы избежать нескольких распространенных затруднений. Во-первых, не оборачивайте названия столбцов в кавычки, но значения столбцов, которые вы вводите, действительно нуждаются в кавычках.
Еще одна вещь, о которой следует помнить, это то, что вы не вводите значение для столбца equip_id
. Это потому, что это автоматически генерируется при добавлении новой строки в таблицу.
Получите информацию, которую вы добавили, набрав:
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
был успешно заполнен, и что все ваши другие данные были организованы правильно.
Если горка на детской площадке сломается, и вам придется ее удалить, вы также можете удалить строку из вашей таблицы, набрав:
Запросите таблицу снова:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Обратите внимание, что строка slide
больше не является частью таблицы.
Шаг 8 — Добавление и удаление столбцов из таблицы
После создания таблицы вы можете изменить ее, добавив или удалив столбцы. Добавьте столбец, показывающий последний визит технического обслуживания для каждого оборудования, набрав:
Просмотрите информацию о вашей таблице еще раз. Был добавлен новый столбец, но данные не были введены:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Если вы обнаружите, что ваша рабочая бригада использует отдельный инструмент для ведения истории обслуживания, вы можете удалить столбец, набрав:
Это удаляет столбец last_maint
и любые значения, найденные в нем, но оставляет все остальные данные нетронутыми.
Шаг 9 — Обновление данных в таблице
До сих пор вы узнали, как добавлять записи в таблицу и как их удалять, но в этом уроке еще не рассматривалось, как изменять существующие записи.
Вы можете обновить значения существующей записи, выполнив запрос для записи, которую вы хотите изменить, и установив столбец в значение, которое вы хотите использовать. Вы можете запросить запись о качелях
(это совпадет с каждой качелью в вашей таблице) и изменить ее цвет на красный
. Это может быть полезно, если вы перекрасили качели:
Вы можете убедиться, что операция выполнена успешно, повторно запросив данные:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Теперь горка зарегистрирована как красная.
Вывод
Теперь вы настроили PostgreSQL на своем сервере Ubuntu 22.04. Если вы хотите узнать больше о Postgres и о том, как его использовать, мы рекомендуем ознакомиться с следующими руководствами:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-22-04