Введение
pgAdmin – это проект с открытым кодом, созданный для управления базами данных PostgreSQL. PostgreSQL – одна из самых востребованных систем управления базами данных в мире.
Инструмент удобен в использовании для новичков и профессионалов, работающих с PostgreSQL. Использует объектно-реляционную БД и предоставляет web-интерфейс и версию для рабочего стола для удобного взаимодействия с объектами базы данных.
Подготовка к установке
Для правильной работы между pgAdmin 4 и PostgreSQL, необходимо заранее подготовить:
- Сервер Ubuntu 22.04. Пользователь имеющий право на выполнение команды sudo. Утилита для конфигурирования межсетевого экрана ufw;
- Установленный и настроенный Nginx как обратный прокси http://unix:/tmp/pgadmin4.sock;
- Установленный PostgreSQL. Необходимо добавить нового пользователя, а также саму БД;
- Виртуальная среда развернутая в Python ;
Этап 1 – Развертывание pgAdmin и скачивание зависимостей
В первую очередь обновим индексы пакетов, для этого воспользуемся встроенной утилитой apt:
sudo apt updateСкачаем зависимости libgmp3-dev, libpq-dev:
sudo apt install libgmp3-dev libpq-devСоздадим нескольких директорий с целью хранения информации о подключенных сессиях, хранилище и журнальных файлов:
sudo mkdir -p /var/lib/pgadmin4/sessions
sudo mkdir /var/lib/pgadmin4/storage
sudo mkdir /var/log/pgadmin4Создадим пользователя serverspace:
useradd -m serverspaceПосле чего нужно задать новую парольную фразу юзера serverspace:
passwd serverspaceДобавляем его в группу sudo:
usermod -aG sudo serverspaceДалее, следует изменить владельцев директорий с root на serverspace, некоторые утилиты не дают доступ запускать службы в режиме суперпользователя:
sudo chown -R serverspace:serverspace /var/lib/pgadmin4sudo chown -R serverspace:serverspace /var/log/pgadmin4Затем перейдём в папку созданную под названием “test”. В данной инструкции имена каталогов указываются аналогично инструкции. Перейдём в ранее созданный каталог test и запустим среду test_env:
cd test/source test_env/bin/activateЗапустив виртуальное окружение test_env, обновим пакет pip для установки нужной библиотеки. В случае не обновлённого pip, мы можем столкнуться с некоторыми трудностями при установке pgAdmin.
Обновление pip происходит следующим образом:
python3 -m pip install -U pipС помощью web-браузера необходимо скачать последний релиз файла с расширением .whl. Который является стандартным пакетным расширением для Python дистрибутива. Скопируем ссылку утилиту, в командной строке пропишем:
wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v7.2/pip/pgadmin4-7.2-py3-none-any.whlИспользуя pip, настроим скачанный пакет:
python -m pip install wheelУстановим:
python -m pip install pgadmin4-7.2-py3-none-any.whlСкачаем Gunicorn на Python WSGI, который будет взаимодействовать с Nginx:
python -m pip install gunicornПервый этап выполнен успешно. Изменим конфигурационный файл, после чего можно будет подключиться к базе данных.
Этап 2 – Конфигурирование pgAdmin 4
Необходимо сделать резервную копию файла config.py, находящийся в папке установленного пакета pgAdmin. В этом примере путь до файла:/test/test_env/lib/python3.10/site-packages/pgadmin4/
cd /test/test_env/lib/python3.10/site-packages/pgadmin4/Изменение основного файла – может привести к потере данных:
cp config.py config.py.origФайл config.py стоит редактировать только при необходимости, чтобы не повредить данные и работоспособность pgAdmin 4.
Внесем правки в файл config_local.py.
Важно! Файл должен располагаться по адресу: /site-packages/pgadmin4/
Для создания файла можно воспользоваться утилитой touch, либо сразу создать и открыть в редакторе vim или nano. Мы воспользуемся nano:
nano /test_env/lib/python3.10/site-packages/pgadmin4/config_local.pyПосле открытия внесем правки:
LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'
AZURE_CREDENTIAL_CACHE_DIR = '/var/lib/pgadmin4/azurecredentialcache'
SERVER_MODE = TrueДанный код выполняет:
LOG_FILE: Путь до файла логов
SQLITE_PATH: Путь к пользовательским данным в БД SQLite Файл хранится в каталоге /var/lib/pgadmin4/, наши пользовательские данные не подлежат потере после обновления.
SESSION_DB_PATH: Путь, указывающий к каталогу, хранящему информацию о подключенных сеансах.
STORAGE_DIR: Путь к каталогу, сохраняющему информацию о хранилище.
SERVER_MODE: Режим сервера – True (Истина).
Для выхода с сохранением нажмём ESC, введём :wq! и нажмём ENTER.
Для запуска конфигураций с данного места, запуска pgAdmin следует выполнить ряд команд.
Установим открытый ключ:
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpgДля продолжения нужно добавить файл конфигурации. Отправим в терминал следующую команду:
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] 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Запустим конфигурацию:
sudo /usr/pgadmin4/bin/setup-web.shДалее напишем наши данные (емеил, парольную фразу) для будущего входа web-интерфейс pgAdmin:

Теперь pgAdmin доступен в нашей сети
Этап 3 – Развертывание Gunicorn и Nginx
За работу pgAdmin в качестве web-приложения отвечает Gunicorn. В данный момент к pgAdmin есть возможность подключения из локальных компьютеров. Для получения доступа за пределами нашей сети конфигурирует web-сервер Nginx.
Перейдем в корневую директорию, затем нужно перейти по адресу:
cd /etc/nginx/sites-available/Внесём изменения в файл /test_domain.ru:
server {
listen 80; #Прослушивание 80 порта IPv4
listen [::]:80; #В большинстве случаев при запуске nginx -t выдаёт ошибку. Ссылается на эту строку, при получении ошибки закомментируйте строку
server_name test_domain.ru www.test_domain.ru; #Название сервера
location / { #Путь
proxy_pass http://unix:/tmp/pgadmin4.sock; #обратный прокси
include proxy_params;
}
}Запустим виртуальную среду Python. Подключим обратный прокси, использовав несколько команд:
source /test/test_env/bin/activategunicorn --bind unix:/tmp/pgadmin4.sock --workers=1 --threads=25 --chdir /root/test/test_env/lib/python3.10/site-packages/pgadmin4 pgAdmin4:app#Выход
[2022-11-04 21:55:37 +0000] [6338] [INFO] Starting gunicorn 20.1.0
[2022-11-04 21:55:37 +0000] [6338] [INFO] Listening at: unix:/tmp/pgadmin4.sock (6338)
[2022-11-04 21:55:37 +0000] [6338] [INFO] Using worker: gthread
[2022-11-04 21:55:37 +0000] [6339] [INFO] Booting worker with pid: 6339Команда должна выполняться из виртуального пространства test_env и в ответ на выходе не должны быть ошибки связанные с библиотеками.
Этап 4 – Доступ к pgAdmin 4
На машине из нашей сети запустим web-браузер и в адресной строке укажем адрес хоста, на котором развёрнут pgAdmin http://server_ip/pgadmin4.
В текущем примере используется адрес http://10.0.0.1/pgadmin4
При авторизации укажем почту, пароль – использованные при создании конфигурации (Конец “Этап 2 – Конфигурирование pgAdmin 4”).
Выполним авторизацию нажав на кнопку Login (Войти) (см. рисунок 1)

При успешной авторизации, мы увидим главную страницу web-интерфейса pgAdmin (см. рисунок 2).

Теперь внесём правки в конфигурационный файл, используемый для соединения с БД PostgreSQL.
Этап 5 – Конфигурация пользователя PostgreSQL
Нажатием CTRL + C выполним остановку процесса, тем самым, перейдем обратно в консоль.
Выполнив Пункт “Процесс установки” из инструкции. Продолжим
настройку.
Войдем в учетную запись “встроенного” администратора:
su postgrespsql postgresСоздадим юзера и саму БД с помощью команд:
CREATE ROLE <логин> LOGIN PASSWORD '<пароль>';
CREATE DATABASE <база_данных> WITH OWNER = <логин>;
Например:
CREATE ROLE serverspace LOGIN PASSWORD 'ububntu';
CREATE DATABASE serverspacedb WITH OWNER = serverspace;В терминале базы данных добавим пароль для пользователя serverspace. При развёртывании СУБД, каждому пользователю необходимо создать сложные пароли и указать привилегии пользователя:
ALTER USER serverspace PASSWORD 'p@55w0rd';Выполним выход написав \q.
Зайдем через браузер в консоль pgAdmin 4. Добавим новый сервер с помощью инструмента Add New Server (см. рисунок 3).

Введём название (см. рисунок 4).

Перейдём во вкладку Connection, заполним поля Hostname/address (Название хоста/адрес) – localhost, Maintenance database (Обслуживающая база данных) – serverspacedb, Username (Имя пользователя) – serverspace, Password – указанный ранее в командной строке. После заполнения полей нажмём Save (см. рисунок 5).
Внимание! На рисунках отображается название базы данных:serverspace.

Правильность подключения проверяется во вкладке Browser (Браузер). Во вкладке Servers появятся символы (1), уведомляющие о подключении нового сервера. В развёрнутом виде получаем информацию о Database (Базы данных), Login/Group Roles (Роли/Группа входа), Tablespace (Табличные пространства). В разделе Базы данных хранится две базы данных postgres (стандартная база данных установленная стандартно в PostgreSQL) и serverspacedb созданная ранее. (см. рисунок 6).

Добавили сервер с помощью несколько кликов по мыши.
Этап 6 – Создание таблицы с помощью Web-Интерфейса.
Чтобы создать таблицу в базе данных, необходимо:
- Выбираем Schemas в базе serverspacedb, затем Tables;
- Выбираем Create -> Table. (см. рисунок 7)

Откроется окно Create table, во вкладке General. Далее внесём название таблицы в поле Name (Название). Owner (Владелец) и Schemas (Схемы) заполняются автоматически. При необходимости можно внести изменения на своё усмотрение (см. рисунок 8).

Перейдём во вкладку Columns, создание столбца происходит следующим образом: Нажимаем кнопку «+» указываем Name (Название), Data type (Тип данных) и значение Not NULL (Не пустое), чтобы все столбцы не были пустыми и выберем Primary key (Первичный ключ) для указания первичного ключа и нажимаем Save (Сохранить) (см. рисунок 9).

Появилась настроенная БД и наша таблица со столбцами.
Приступим к заполнению таблицы с помощью SQL. вызываем контекстное меню правой кнопкой мыши по нашей таблице и нажимаем на Scripts -> CREATE Script (Создать скрипт) (см. рисунок 10).

Добавим скрипт для заполнения столбцов, также можно добавить больше информации разделяя запятыми (см. рисунок 11).
/*Добавление информации в таблицу*/
INSERT INTO public."test_table"(
/*Название строк*/
test_col1,
test_col2,
test_col3)
/*Значения*/
VALUES
/*Информация о строках*/
('Test1', 10, 'True'),
('Test2', 20, 'False'),
('Test3', 30, 'True');
Запускаем скрипт с помощью кнопки (▶) и закрываем окно с редактором.
Просмотр внесённых изменений в таблице выполняется следующим образом:
- Используем ПКМ на нужную таблицу;
- Выбираем View/Edit Data (Посмотреть/Изменить данные);
- Затем выбираем All Rows (Все строки). (см. рисунок 12)

В открывшемся окне с результатами выполненного запроса, заполненные данные хранятся в разделе Data Output. (см. рисунок 13)

Использованный метод считается одним из используемых для создания таблицы и заполнения.
Однако, следующий пример использует только SQL запрос:
- Вызываем контекстное меню на пункте Tables;
- Выбираем Query Tool. (см. рисунок 14)

Создадим таблицу и столбцы. Заполним созданные поля типом данных, и информацией со значениями «15, ‘test_table2’, ‘True’» (см. рисунок 15):
/*Создание таблицы с названием test_table2*/
Create table test_table2 (
/*Атрибуты таблицы*/
test_table1 int,
test_table2 text,
test_table3 boolean );
/*Скрипт для заполнения таблицы*/
insert into test_table2 (
/*Ввод данных в таблицы и в их атрибуты*/
test_table1,
test_table2,
test_table3 )
/*Заполняемые значения атрибутов*/
values (15, 'test_table2', 'True'); 
При проверке новой таблицы мы не обнаружим новую таблицу, пока не обновим базу данных serverspacedb.
Нажимаем на базу данных правой кнопкой мыши и выбираем пункт Refresh (Обновить) (см. рисунок 16).

Теперь посмотрим результаты запроса нашего кода. Данные заполнены в соответствии с написанным запросом (см. рисунок 17)

У нас получились две таблицы: первая – с использованием визуального интерфейса, вторая – используя SQL
Выводы
pgAdmin уникальный инструмент для работы с базой данных в режиме web-интерфейса.
Как работать:
- Установить Ubuntu Server 22.04;
- Настройка ufw для порта 80/tcp;
- Установите Nginx, Python, PostgreSQL;
- Разверните виртуальную среду на Python;
- Установите библиотеку Gunicorn;
- Настройте обратный прокси в Nginx;
- Сконфигурируйте Gunicorn и Nginx для их совместной работы;
- Запустите скрипт для установки виртуального сервера pgAdmin;
- Запустите сервер;
- Перейдите в браузере по адресу сервера локального хоста;
- Добавьте сервер, укажите данные для PostgreSQL;
- Создайте таблицу, заполняйте данными и редактируйте.