Как установить и настроить базу данных PostgreSQL в Ubuntu 22.04
Пользователи Ubuntu 22.04 используют PostgreSQL как популярную систему управления базами данных, развернутую на рынке программного обеспечения около 20 лет. Эта система базы данных очень надежна, надежна и поддерживается активным сообществом, которое добровольно тратит свое драгоценное время на ее развитие. В результате исправление и целостность базы данных PostgreSQL увеличиваются с каждым днем.
В этом блоге будет продемонстрирована процедура установки и настройки базы данных PostgreSQL в Ubuntu 22.04. Давайте начнем.
Установка PostgreSQL в Ubuntu 22.04
Чтобы установить PostgreSQL на Ubuntu 22.04, следуйте приведенным инструкциям.
Шаг 1. Обновите системные пакеты
Прежде всего нажмите «CTRL+ALT+T» и обновите системные пакеты:
$ sudo apt update

Шаг 2. Установите PostgreSQL
Затем выполните предоставленную команду для установки PostgreSQL в Ubuntu 22.04:
$ sudo apt install postgresql postgresql-contrib


Теперь перейдите к следующему шагу.
Шаг 3. Запустите службу PostgreSQL
Запишите предоставленную команду для запуска службы PostgreSQL:
$ sudo systemctl start postgresql.service

Теперь давайте перейдем к настройке базы данных PostgreSQL в Ubuntu 22.04.
Настройка базы данных PostgreSQL в Ubuntu 22.04
Следуйте приведенным ниже инструкциям по настройке базы данных PostgreSQL в Ubuntu 22.04.
Шаг 1. Переключитесь на учетную запись postgres
При установке PostgreSQL автоматически создается учетная запись пользователя с именем «postgres». Переключитесь на эту учетную запись для доступа к базе данных PostgreSQL:
$ sudo -i -u postgres

Шаг 2. Создайте новую роль
После входа в учетную запись «postgres» создайте новую роль с помощью предоставленной команды:
$ createuser —interactive

Введите имя роли и разрешите новую роль суперпользователю. Например, мы указали «linux-console» в качестве имени нашей новой роли и ввели «y», чтобы пометить это как суперпользователя:

Шаг 3. Создайте базу данных PostgreSQL
Теперь выполните команду «createdb» и укажите то же имя для базы данных PostgreSQL, которое вы добавили в качестве имени роли:
$ createdb linux-console

Шаг 4. Создайте нового пользователя
Используйте команду «adduser» для создания нового пользователя с тем же именем, что и роль и база данных PostgreSQL:
$ sudo adduser linux-console

Шаг 5. Смените аккаунт
Затем переключитесь на только что созданную учетную запись, указав имя пользователя в следующей команде:
$ sudo -i -u linux-console

Шаг 6. Подключитесь к базе данных PostgreSQL
Выполните команду «psql», чтобы установить соединение с базой данных PostgreSQL:

Шаг 7. Проверьте информацию о подключении
Наконец, убедитесь, что вы подключились к базе данных PostgreSQL:
Данный вывод показывает, что мы успешно подключились к созданной базе данных «linux-console» PostgreSQL:

Как удалить базу данных PostgreSQL в Ubuntu 22.04
Чтобы удалить базу данных PostgreSQL в Ubuntu 22.04, выполните следующую команду:
$ sudo apt remove postgresql postgresql-contrib

Мы собрали самый простой способ установки, настройки и удаления базы данных PostgreSQL в Ubuntu 22.04.
Заключение
Все права защищены. © Linux-Console.net • 2019-2023
Подготовка к работе — Основы реляционных баз данных
Если PostgreSQL запустить без аргументов, то она пытается подключиться к локальной базе данных, которая находится на той же машине. При этом программа подключается с именем, которое совпадает с именем текущего пользователя. Делает она это с помощью роли с этим же именем. Если PostgreSQL установили верно, то запуск в Linux, например, Ubuntu, негативно реагирует на отсутствие соответствующей роли:
"tirion" does not exist
Эту проблему можно решить с помощью конструкции sudo -u postgres psql , которую используют в терминале при подключении PostgreSQL. Но это не лучшее решение, по таким причинам:
- У пользователя postgres есть максимальные права в СУБД. Если завладеть ими, можно все уничтожить. Поэтому приложения или пользователи никогда не создают базы данных от имени postgres и никогда не работают из-под этого пользователя
- Придется постоянно использовать эту конструкцию sudo -u postgres для любых команд, которые связаны с СУБД. Если у вас MacOS, часть sudo -u postgres использовать не нужно. После установки PostgreSQL автоматически конфигурируется для работы с вашим пользователем
В этом уроке разберем, как создать пользователя и базу данных в СУБД, чтобы psql не выдавал ошибку и все данные были в безопасности. Так мы подготовим PostgreSQL к работе.
Создание пользователя в СУБД
Чтобы упростить работу по ходу курса, создадим роль с таким же именем, как и пользователь, из-под которого вы работаете. Выполните следующие действия:
-
Посмотрите имя вашего текущего пользователя:
whoami tirion
# Флаг --createdb добавляет нашей роли возможность создавать базы данных # По умолчанию этой возможности нет sudo -u postgres createuser --createdb tirion # Чтобы удалить пользователя, можно воспользоваться командой: dropuser tirion
Теперь у нас есть роль в СУБД. Попробуем с ее помощью соединиться с PostgreSQL:
"tirion" does not exist
Снова ошибка. Теперь psql «ругается», что не выбрана база данных. Невозможно соединиться с СУБД, если не указать конкретную базу данных. Ее можно указать самостоятельно — передать один аргумент в psql .
Мы уже знаем, что внутри PostgreSQL создана база postgres. Попробуем подключиться к ней:
postgres=>
Соединение удалось. Теперь посмотрим список ролей. Для этого подходит команда \du (Describe Users), которую нужно выполнить внутри REPL:
postgres=> \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | <> tirion | Create DB | <>
В СУБД создалось две роли: postgres и которую самостоятельно добавили ранее. Теперь создадим базу данных.
Создание базы данных в СУБД
Для экспериментов нам понадобится база данных и, возможно, даже не одна. Создадим базу с именем hexlet. Сделать это можно из командной строки командой createdb :
# Опция --owner позволяет указать владельца создаваемой базы данных sudo -u postgres createdb --owner=tirion hexlet # Если запустить эту команду без аргументов, # то она попытается создать базу данных, # которая совпадает с именем вашего пользователя в системе createdb hexlet
Имя для базы данных выбирается произвольно и обычно совпадает с названием проекта, для которого она создается. Имена баз уникальны в рамках одной СУБД. Это значит, что повторный вызов createdb с тем же именем приведет к ошибке.
После установки PostgreSQL создает несколько служебных баз данных, которые нужны для работы самой СУБД. Посмотрим их список:
# Посмотреть список баз данных psql -l # Неполный вывод List of databases Name | Owner | Encoding | Collate | Ctype | -----------+----------+----------+-------------+-------------+ pgadmin | pgadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | tirion | tirion | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Теперь у нас есть роль и база данных для экспериментов. Подключимся к этой базе данных:
hexlet=>
Созданную базу данных можно удалить командой dropdb :
Если удалили, не забудьте ее снова создать, так как она понадобится нам в дальнейшем.
Запускать команду dropdb нужно с осторожностью. Удаление базы данных — необратимый процесс, так как базы невозможно восстановить без резервных копий. Чтобы избежать проблем: команда dropdb не работает без аргументов — ей всегда нужно передавать имя базы.
Удалить базу данных можно только в том случае, если к ней никто не подключен — за исключением того, кто удаляет. Если есть другие клиенты, например psql или pgadmin4, то СУБД предупредит о невозможности выполнить команду.
"hexlet" is being accessed by other users DETAIL: There is 1 other session using the database.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Установка и использование PostgreSQL на Ubuntu 20.04

Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они предоставляют структурированный способ хранения, организации и доступа к информации.
PostgreSQL, или Postgres, — это система управления реляционными базами данных, которая предоставляет собой реализацию языка запросов SQL. Она соответствует стандартам и обладает множеством передовых функций, таких как надежность и параллельность операций без блокировки при чтении.
В этом обучающем руководстве мы рассмотрим, как установить Postgres на сервер Ubuntu 20.04. Также в нем содержится ряд инструкций для администрирования базы данных.
Предварительные требования
Для выполнения данного руководства вам потребуется один сервер Ubuntu 20.04 с конфигурацией, выполненной согласно руководству по первоначальной настройке сервера Ubuntu 20.04. После выполнения всех предварительных действий ваш сервер должен иметь пользователя без прав root с разрешениями sudo и базовый брандмауэр.
Шаг 1 — Установка PostgreSQL
Используемые по умолчанию репозитории Ubuntu содержат пакеты Postgres, поэтому вы можете устанавливать их с помощью системы управления пакетами apt .
Если вы еще не сделали этого, обновите локальный индекс пакетов вашего сервера:
После этого установите пакет Postgres вместе с пакетом -contrib , который содержит дополнительные утилиты и функциональные возможности:
После установки программного обеспечения мы можем переходить к изучению его работы и возможных отличий от других реляционных систем управления базами данных, которые вы, возможно, использовали.
Шаг 2 — Использование ролей и баз данных в PostgreSQL
По умолчанию Postgres использует концепцию «ролей» для выполнения аутентификации и авторизации. В некоторых аспектах они напоминают обычные учетные записи в Unix, однако Postgres не делает различий между пользователями и группами и предпочитает использовать более гибкий термин “роль”.
После установки Postgres настроена на использование аутентификации ident, что значит, что выполняется привязка ролей Postgres с соответствующей системной учетной записью Unix/Linux. Если роль существует внутри Postgres, пользователь Unix/Linux с тем же именем может выполнить вход в качестве этой роли.
В ходе установки была создана учетную запись пользователя postgres, которая связана с используемой по умолчанию ролью Postgres. Чтобы использовать Postgres, вы можете войти в эту учетную запись.
Существует несколько способов использования этой учетной записи для доступа к Postgres.
Переключение на учетную запись postgres
Вы можете переключиться на учетную запись postgres на вашем сервере с помощью следующей команды:
Теперь вы можете немедленно получить доступ к командной строке PostgresSQL с помощью следующей команды:
Теперь вы можете свободно взаимодействовать с СУБД по мере необходимости.
Закройте командную строку PostgreSQL с помощью следующей команды:
В результате вы вернетесь в командную строку postgres в Linux.
Доступ к командной строке 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 :
В результате этих действий у вас будет новый пользователь, но вам предстоит еще добавить базы данных. В следующем разделе описан этот процесс.
Шаг 4 — Создание новой базы данных
Еще одно предположение, которое система аутентификации Postgres использует по умолчанию, состоит в том, что для любой роли, используемой для входа, существует база данных с тем же именем, к которой роль может получить доступ.
Это означает, что если созданный вами в последнем разделе пользователь будет иметь имя sammy, эта роль попытается подключиться к базе данных, которая также называется «sammy» по умолчанию. Вы можете создать соответствующую базу данных с помощью команды createdb .
Если вы используете учетную запись postgres, необходимо ввести следующее:
Если же вы предпочитаете использовать sudo для каждой команды без переключения с обычной учетной записи, введите следующую команду:
Подобная гибкость предоставляет несколько способов для создания баз данных в зависимости от необходимости.
Шаг 5 — Открытие командной строки Postgres с новой ролью
Чтобы выполнить аутентификацию с помощью ident , вам потребуется пользователь 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) );
Как видите, эти команды дают таблице имя, а затем определяют столбцы, тип столбцов и максимальную длину поля данных. Кроме того, вы можете добавить ограничения таблицы для каждой колонки.
Для демонстрационных целей необходимо создать следующую таблицу:
Эта команда создает таблицу с описью оборудования для установки на игровых площадках. В первом столбце таблицы хранятся идентификационные номера оборудования последовательного типа. Эти номера представляют собой целые числа с автоматическим инкрементальным увеличением. В этом столбце также содержится константа PRIMARY KEY , и это означает, что значения в нем должны быть уникальными и ненулевыми.
Следующие две строки создают столбцы type и color оборудования соответственно, и ни один из них не может быть пустым. Следующая строка создает столбец location и ограничение, требующее, чтобы значение было одним из восьми возможных вариантов. Последняя строка создает столбец даты , которая указывает дату установки оборудования.
Для двух из столбцов ( 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 — Добавление, запрос и удаление данных в таблице
Вставим в таблицу данные, например, slide и swing. Для этого нужно вызвать желаемую таблицу, присвоить имена столбцам и задать данные для каждого столбца следующим образом:
Вы должны быть внимательны при вводе данных, чтобы не допустить нескольких общих проблем. Во-первых, оборачивайте в кавычки не названия столбцов, а значения в столбцах.
Еще один момент, который необходимо учитывать, состоит в том, что вы не должны указывать значения для столбца 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 уже заполнен успешно, а все другие данные были организованы корректно.
Если же строка slide в таблице разрывается, вы можете удалить строку из таблицы, использовав следующую команду:
Запросите таблицу еще раз:
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 (запрос выдаст все записи swing в вашей таблице) и изменить ее цвет на red . Это может быть полезно, если вы задали набору swing задание рисования:
Вы можете убедиться, что операция прошла успешно, запросив данные еще раз:
Output equip_id | type | color | location | install_date ----------+-------+-------+-----------+-------------- 2 | swing | red | northwest | 2018-08-16 (1 row)
Как видите, ваша горка теперь имеет красный цвет.
Заключение
Вы настроили PostgreSQL на сервере Ubuntu 20.04. Если вы хотите узнать больше о системе Postgres и способах ее использования, мы рекомендуем вам изучить следующие руководства:
- Сравнение систем управления реляционными базами данных
- Практика работы с запросами с помощью SQL
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Работаем с PostgreSQL через командную строку в Linux
Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:
sudo apt install postgresql-client-
sudo apt install postgresql-client-12
Для установки PostgreSQL сервера:
sudo apt install postgresql
Проверим, можем ли мы подключиться к базе данных PostgreSQL:
sudo -u postgres psql -c "SELECT version();"
Вывод команды должен быть примерно таким:
$ sudo -u postgres psql -c "SELECT version();" version ---------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit (1 row)
PostgreSQL Подключение, Пользователи (Роли) и Базы Данных
Логин в только что установленный postgreSQL сервер нужно производить под именем пользователя postgres:
sudo -i -u postgres psql
Выйти из клиента PostgreSQL:
\q
Для подключения к базе данных PostgreSQL можно использовать команду:
psql -U -h -d
Если такая команда не просит ввести пароль пользователя, то можно еще добавить опцию -W.
$ psql -Usrv161924_dom -hpgsql-161924.srv.hoster.ru -dsrv161924_dom -W Password for user srv161924_dom:
После ввода пароля и успешного подключения к базе данных PostgreSQL, можно посылать SQL-запросы и psql-команды.
PostgreSQL создание новой роли и базы данных
Создать новую роль c именем admin (указывайте нужное имя):
sudo su - postgres -c "createuser admin"
Создание новой базы данных:
sudo su - postgres -c "createdb testDb"
Дать права роли на базу данных:
grant all privileges on database testDb to admin;
Включить удаленный PostgreSQL доступ для пользователей
Нам нужно отредактировать файл /etc/postgresql//main/pg_hba.conf, задав опцию md5 вместо peer.
может быть 10, 11, 12 и т.д.
sudo vim /etc/postgresql/12/main/pg_hba.conf
После этого сделать restart PostgreSQL:
sudo service postgresql restart
Полезные команды PostgreSQL
Выйти из клиента PostgreSQL:
\q
Показать список баз данных PostgreSQL:
\l
Показать список таблиц:
\dt
Показать список пользователей (ролей):
\du
Показать структуру таблицы:
\d table_name
Переименовать базу данных:
ALTER DATABASE db RENAME TO newdb;
Удалить базу данных:
drop database db_name;
Изменить текущую базу данных в PostgreSQL (вы не сможете переименовать или удалить текущую базу данных):
\connect db_name или более короткий alias: \c db_name
Удалить роль (пользователя):
DROP ROLE user_name;
Роль не будет удалена, если у нее есть привелегии — возникнет ошибка ERROR: role cannot be dropped because some objects depend on it .
Нужно удалить привелегии у роли, например если нужно удалить роль admin2, нужно выполнить последовательность комманд с Drop Owned:
db=# REASSIGN OWNED BY admin2 TO postgres; REASSIGN OWNED db=# DROP OWNED BY admin2; DROP OWNED db=# drop role admin2; DROP ROLE
Дать права пользователю/роли на логин ( role is not permitted to log in ):
ALTER ROLE admin2 WITH login;
Выбор shema psql в консоли:
Посмотреть список всех схем:
Подключиться к конкретной схеме:
SET search_path TO schema_name
Sequences
Получить имена всех созданных sequences:
select relname from pg_class where relkind='S';
Получить последнее значение sequence, которые будет присвоено новой вставляемой в таблицу записи:
SELECT last_value FROM order_id_seq;
- Работа с MySQL через консоль