В данном руководстве мы ознакомимся с установкой 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Здравствуйте. Установил все работает, но почему pgAdmin по ссылке на сервере, доступен только после перезагрузки сервера. Потом выходит ошибка страница не найдена?
2024-10-10 at 20:12Нужно проверить статусы всех сервисов. Не исключено что какой-то из сервисов завершается с ошибкой из-за недостатка ресурсов, например, RAM.
2025-02-24 at 18:34