Введение
Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения, организации и доступа к информации.
PostgreSQL, или Postgres, является системой управления реляционными базами данных, которая предоставляет реализацию языка запросов SQL. Он соответствует стандартам и имеет множество продвинутых функций, таких как надежные транзакции и параллелизм без блокировки чтения.
Это руководство демонстрирует, как установить Postgres на сервере Ubuntu 20.04. Оно также содержит инструкции по общему администрированию баз данных.
1-Нажмите, чтобы развернуть базу данных PostgreSQL, используя Управляемые базы данных DigitalOcean. Позвольте DigitalOcean заниматься масштабированием, обслуживанием и обновлениями вашей базы данных.
Предварительные требования
Для следования по этому руководству вам понадобится один сервер с Ubuntu 20.04, который был настроен в соответствии с нашим руководством Начальная настройка сервера для Ubuntu 20.04. После завершения этого предварительного учебного пособия на вашем сервере должен быть создан пользователь без прав администратора, но с правами sudo, а также установлен базовый брандмауэр.
Шаг 1 — Установка PostgreSQL
В репозиториях по умолчанию Ubuntu содержатся пакеты Postgres, поэтому вы можете установить их, используя систему управления пакетами apt
.
Если вы еще этого не сделали, обновите локальный индекс пакетов вашего сервера:
Затем установите пакет Postgres вместе с пакетом -contrib
, который добавляет некоторые дополнительные утилиты и функциональность:
Убедитесь, что сервер запущен с помощью команды systemctl start
:
Теперь, когда программное обеспечение установлено и запущено, мы можем рассмотреть, как оно работает и в чем может отличаться от других систем управления реляционными базами данных, которыми вы могли пользоваться ранее.
Шаг 2 — Использование ролей и баз данных PostgreSQL
По умолчанию Postgres использует концепцию “ролей” для обработки аутентификации и авторизации. В некотором отношении они похожи на обычные учетные записи Unix-стиля, но Postgres не делает различий между пользователями и группами, предпочитая более гибкий термин “роль”.
При установке Postgres настроен на использование аутентификации через peer, что означает, что он ассоциирует роли 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. Вы можете создать новые роли из командной строки с помощью команды createrole
. Флаг --interactive
попросит вас ввести имя новой роли и спросит, должны ли ей быть назначены права суперпользователя.
Если вы вошли в систему под учётной записью postgres, вы можете создать нового пользователя, набрав:
Если же вы предпочитаете использовать sudo
для каждой команды без переключения с вашей обычной учётной записи, введите:
Скрипт предложит вам несколько вариантов и, в зависимости от ваших ответов, выполнит правильные команды Postgres для создания пользователя по вашим требованиям.
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Вы можете получить больше контроля, передавая дополнительные флаги. Ознакомьтесь с вариантами, посмотрев страницу man
:
Теперь у вашей установки Postgres есть новый пользователь, но вы ещё не добавили никаких баз данных. В следующем разделе описан этот процесс.
Шаг 4 — Создание новой базы данных
Ещё одним предположением, которое делает система аутентификации Postgres по умолчанию, является то, что для любой роли, используемой для входа в систему, должна существовать база данных с тем же именем, к которой она может получить доступ.
Это означает, что если пользователь, которого вы создали в последнем разделе, называется sammy, эту роль будет пытаться подключиться к базе данных, которая по умолчанию также называется “sammy”. Вы можете создать соответствующую базу данных с помощью команды createdb
.
Если вы вошли в систему под учетной записью postgres, вы бы ввели что-то вроде:
Если же вы предпочитаете использовать sudo
для каждой команды, не переключаясь с вашей обычной учетной записи, вы бы ввели:
Эта гибкость предоставляет несколько способов создания баз данных по мере необходимости.
Шаг 5 — Открытие приглашения Postgres с новой ролью
Для входа с аутентификацией peer вам понадобится пользователь Linux с таким же именем, как ваша роль Postgres и база данных.
Если у вас нет соответствующего пользователя Linux, вы можете создать его с помощью команды adduser
. Вам придется сделать это из вашей обычной учетной записи с привилегиями 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)
);
Как видите, эти команды задают имя таблицы, а затем определяют столбцы, а также тип столбца и максимальную длину данных поля. Вы также можете дополнительно добавить ограничения таблицы для каждого столбца.
Вы можете узнать больше о том, как создавать и управлять таблицами в Postgres здесь.
Для демонстрации создайте следующую таблицу:
Эта команда создаст таблицу, в которой будут отражаться данные об игровом оборудовании. Первый столбец в таблице будет содержать номера 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” здесь, но также есть что-то под названием 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 — Обновление данных в таблице
До сих пор вы узнали, как добавлять записи в таблицу и как удалять их, но в этом учебнике еще не рассматривалось, как изменять существующие записи.
Вы можете обновить значения существующей записи, запросив нужную запись и установив столбец в значение, которое вы хотите использовать. Вы можете запросить запись swing
(это будет соответствовать каждому качелю в вашей таблице) и изменить его цвет на красный
. Это может быть полезно, если вы покрасили качели:
Вы можете убедиться, что операция была успешной, запросив данные снова:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Как видите, теперь горка зарегистрирована как красная.
Заключение
Вы теперь настроены с PostgreSQL на вашем сервере Ubuntu 20.04. Если вы хотите узнать больше о Postgres и как его использовать, мы рекомендуем ознакомиться с следующими руководствами:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04