
В данном руководстве мы ознакомимся с установкой PostgreSQL 12, реляционной объекто-ориентированной системой управления базами данных (СУБД). А также, мы проинсталлируем pgAdmin4, инструментарий для работы с сервером баз данных PostgreSQL. Итак, наш мануал – о том, как установить PostgreSQL и pgAdmin4 в Ubuntu 20.04.
Все работы на нашем сервере мы будем производить под учётной записью, имеющей привилегии sudo
. Также, на нашем сервере установлен и настроен брандмауэр UFW
.
Установка PostgreSQL
Поскольку PostgreSQL устанавливается из стандартных репозиториев Ubuntu, для запуска установки подключитесь к вашему серверу под учётной записью, входящей в группу sudo
, и наберите в командной строке:
$ sudo apt update
$ sudo apt install postgresql
При установке пакета инсталлятор создаст новый PostgreSQL-кластер. Данный кластер представляет из себя коллекцию баз данных, которая управляется одним сервером. Также, установщик создаст рабочие директории для PostgreSQL. Данные, необходимые для работы PostgreSQL, будут находится в каталоге /var/lib/postgresql/12/main
, а файлы конфигурации – в каталоге /etc/postgresql/12/main
.
После завершения установки вы можете убедиться, что служба PostgreSQL активна. Для чего в командной строке наберите:
$ sudo systemctl is-active postgresql

Также, посмотрите, включена ли служба:
$ sudo systemctl is-enabled postgresql

И наконец, вы можете увидеть статус службы PostgreSQL:
$ sudo systemctl status postgresql

После чего, убедитесь, что PostgreSQL-сервер готов принимать подключения от клиентов:
$ sudo pg_isready

Создание базы данных в PostgreSQL
Чтобы создать новую базу данных, вы должны получить доступ к программной оболочке PostgreSQL. Во-первых, подключитесь к системе с помощью учётной записи postgres
:
$ sudo su - postgres

Подключившись, выполните команду psql
:
$ psql

Если вы видите приглашение ко вводу команд postgres=#
, значит вы находитесь в оболочке СУБД PostgreSQL. И значит, можно приступать к созданию базы данных. Первая команда добавит в PostgreSQL пользователя bob
(на своём сервере вы можете использовать свои имена пользователей и баз данных):
# CREATE USER bob WITH PASSWORD 'P@$$w0rd';

Как вы понимаете, P@$$w0rd
– это пароль для входа под учётной записью bob
. В своём примере вы, конечно, можете использовать другой пароль.
Следующая команда создаст базу данных, которую мы назовём, например, bobdb
:
# CREATE DATABASE bobdb;

Теперь, назначьте своему пользователю все права сразу на вашу базу данных. В нашем примере это будет выглядеть так:
# GRANT ALL PRIVILEGES ON DATABASE bobdb to bob;

Чтобы покинуть оболочку, наберите:
# \q

И теперь, можно отключить от системы пользователя postgres
:
$ exit

Настройка клиентской аутентификации PostgreSQL
СУБД PostgreSQL использует клиентскую аутентификацию для того, чтобы решать, какая учётная запись к какой базе данных и с какого хоста может подключаться. Это определяется настройками конфигурационного файла клиентской аутентификации. В Ubuntu таким файлом является файл pg_hba.conf
. Он располагается в директории /etc/postgresql/12/main/
.
Откройте этот файл для редактирования, например, с помощью текстового редактора nano
:
$ cd /etc/postgresql/12/main
$ sudo nano pg_hba.conf
PostgreSQL использует много типов методов клиентской аутентификации, таких как peer, ident, password или md5. Тип md5 является наиболее безопасным и рекомендуемым по причине того, что он требует от клиента использовать для аутентификации пароли с двойным md5-хешированием. Поэтому нам остаётся лишь убедиться, что в строках ниже указан именно метод md5:

Если вы произвели в конфигурационном файле какие-либо изменения, не забудьте сохранить их при закрытии файла. В nano
для этого необходимо нажать Ctrl X
, затем Y
и Enter
. После чего, перезапустите службу:
$ sudo systemctl restart postgresql
Установка pgAdmin4
Пакет pgAdmin4 не доступен для установки из официальных репозиториев Ubuntu. Поэтому мы будем устанавливать его из репозитория pgAdmin4 APT
. Для этого сначала необходимо установить данный репозиторий.
Добавьте публичный ключ для репозитория и создайте его конфигурационный файл. Для чего наберите следующие команды:
$ curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
$ sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
Затем запустите установку pgAdmin4:
$ sudo apt install pgadmin4
Данной командой вы установили набор необходимых пакетов включая веб-сервер Apache2. После завершения инсталляции запустите скрипт для установки веб-компонентов. Данный скрипт должен был установиться вместе с пакетом pgdmin4.
Во время своей работы скрипт попросит вас ввести адрес электронной почты. В нашем примере мы будем использовать mailofbob@mail.ru
, вместо которого вам необходимо ввести свой. Также, скрипт потребует установить пароль, который необходимо ввести дважды. Учтите, что эти E-mail и пароль вы будете в дальнейшем использовать для подключения к веб-интерфейсу pgAdmin4.
$ sudo /usr/pgadmin4/bin/setup-web.sh

В процессе установки скрипт перезапустит службу Apache2 для того, чтобы вступили в силу произведённые изменения.
После того, как скрипт закончит свою работу, вам нужно будет добавить разрешение для Apache2 на доступ через брандмауэр. Чтобы сделать это, наберите:
$ sudo ufw allow 'Apache'
Запустите брандмауэр:
$ sudo ufw enable

Убедитесь, что служба Apache2 включена в список разрешённых на брандмауэре вашего сервера:
$ sudo ufw status

Настройка доступа через веб-интерфейс
Чтобы получить доступ к веб-интерфейсу pgAdmin4, откройте браузер и введите адрес в строке навигации:
http://Your-Server-IP-address/pgadmin4
где, Your-Server-IP-address
– IP-адрес вашего VPS.
После этого вы увидите страницу для подключения к pgAdmin4. Для входа используйте адрес электронной почты и пароль, который вы вводили при работе скрипта setup-web.sh
:

В случае успешной авторизации, вы попадёте на панель веб-приложения pgAdmin4. Там, вы можете подключиться к своему серверу PostgreSQL, нажав на ярлык Add New Server:

Далее, заполните данные нового сервера на закладке General
и перейдите на закладку Connection
:

Теперь, заполните данные, необходимые для подключения к серверу. В строке Host name/address
введите localhost
, в строке Port
можно оставить номер порта по умолчанию – 5432. В строке Maintenance database
оставьте значение postgres
. А вот, в строках Username
и Password
вы должны указать имя пользователя и его пароль, которые вы ранее добавили в PostgreSQL. В нашем примере это был пользователь bob
с паролем P@$$w0rd
. Вам, разумеется, необходимо использовать данные своей учётной записи PostgreSQL. Когда всё будет готово, нажмите Save
.

Если введённые учётные данные корректны, вы попадёте в панель управления pgAdmin4. Здесь, вы даже можете найти ту базу данных, которую вы создавали при настройке PostgreSQL. В нашем примере это была база данных bobdb
.

Таким образом, мы установили СУБД PostgreSQL, создали там учётную запись, базу данных и добавили созданному пользователю набор полномочий по отношению к созданной базе. После чего, мы подключились к СУБД PostgreSQL при помощи веб-интерфейса pgAdmin4. Основой всего нам послужил виртуальный выделенный сервер (VPS), работающий под управлением операционной системы Ubuntu 20.04.
Спасибо ребята. Качественный материал!
2021-10-23 at 01:30sudo sh -c ‘echo “deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main” > /etc/apt/sources.list.d/pgadmin4.list
команда не работает!
2021-11-09 at 10:15Работает ли у вас комманда lsb_release?
2021-11-09 at 14:27Возможно вам нужно установить пакет lsb-core:
sudo apt-get install lsb-core
а что если нет доступа в интернет….?
2021-11-09 at 15:52К сожалению, в этом случае вы и pgAdmin4 установить не сможете. Debian пакеты скачиваются из интернета.
2021-11-09 at 16:01Добрый день,
С подобным описанием как и на их оф сайте выдает кучу ошибок при установке репозитория:
—
Err:10 http://apt.postgresql.org/pub/repos/apt uma-pgdg Release
404 Not Found [IP: 72.32.157.246 80]
Ign:12 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/uma pgadmin4 InRelease
Err:13 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/uma pgadmin4 Release
404 Not Found [IP: 72.32.157.246 443]
Reading package lists… Done
E: The repository ‘http://apt.postgresql.org/pub/repos/apt uma-pgdg Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: The repository ‘https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/uma pgadmin4 Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
—
Не могли бы вы подсказать как обойти эту ошибку, если у меня Mint?
Спасибо
2022-01-10 at 14:52Возможно, вы забыли выполнить команду
2022-01-10 at 18:11sudo apt update
. Либо что-то не так с вашим sources.listзапускается в браузере, но сервис все равно не рабочий, толку 0 от него
2022-01-13 at 22:47после postgres@ruvds-d44he:~/12/main$ sudo su – postgres
2022-04-08 at 19:38выдает sudo: unable to resolve host ruvds-d44he: Name or service not known
пароль просит ? какой ? [sudo] password for postgres:
Sorry, try again.
В данном случае спрашивается sudo пароль от вашего VPS.
Чтобы warning не раздражал, то добавьте в /etc/hosts строчку:
2022-04-11 at 13:10$IP ruvds-d44he
($IP – это IP адрес вашего VPS)
Есть ли описание как подключится к созданной БД? через IDE или SQL shel(psql)l
2022-04-08 at 21:37В IDE скорее всего будет возможность ввести IP сервера с базой и подключиться.
У psql подробная документация. Точно также зная IP и пароли можно подключиться: https://www.postgresql.org/docs/current/app-psql.html
2022-04-11 at 13:21В гайде есть неточности. Например – web интерфейс не работает при такой установке.
2022-08-17 at 21:52после ввода http://My-Server-IP-address/pgadmin4
2022-09-12 at 20:50No such file or directory
всё делал по инструкции
Точнее в браузере, 404
2022-09-12 at 20:57Thank you very much!
2022-09-29 at 14:05пробовал на Mint 21, ожидаемо ошибка: “The repository ‘https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/vanessa pgadmin4 Release’ does not have a Release file”. Возможно ли подставить нужную версию Ubuntu – может jammy или другую?
2022-12-03 at 22:51вот поэтому я и снес минт. установил последнюю убунту и проблемы исчезли
2023-02-13 at 09:31всем добрый подскажите пожалуйста
настолько раз сносил вм
каждый раз одна и также картина создаю бд создается в кодировке LATIN1 и соответственно при открытии pgadmin ошибка
2023-03-19 at 17:32на каком моменте выбор кодировки ?
как убрать эту кодировку
ERROR: character with byte sequence 0xd0 0x92 in encoding “UTF8” has no equivalent in encoding “LATIN1”
Спасиибоо наконец получилось в pgadmin создать сервер
2023-11-12 at 22:02При выполнении вот этой команды: $ sudo /usr/pgadmin4/bin/setup-web.sh мне выдаёт вот это:
Setting up pgAdmin 4 in web mode on a Debian based platform…
Creating configuration database…
pgAdmin 4 – Application Initialisation
======================================
Creating storage and log directories…
2023-12-06 at 14:32We can now configure the Apache Web server for you. This involves enabling the wsgi module and configuring the pgAdmin 4 application to mount at /pgadmin4. Do you wish to continue (y/n)? y
The Apache web server is not running. We can enable and start the web server for you to finish pgAdmin 4 installation. Continue (y/n)? y
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Apache successfully enabled.
System has not been booted with systemd as init system (PID 1). Can’t operate.
Failed to connect to bus: Host is down
Error starting apache2. Please check the systemd logs
И я ничего не могу с этим сделать. Не понимаю, в чём проблема…
После выполнения команды нужно проверить логи systemd. Посмотреть логи можно командой:
2023-12-21 at 18:16sudo journalctl -r