Установка PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04

Кратко: пошаговое руководство по установке PostgreSQL 14 и pgAdmin 4 на сервер с Ubuntu 22.04. Вы узнаете, как установить сервер БД и веб-интерфейс, создать роли и базы, открыть удалённый доступ, настроить uWSGI + Nginx с SSL от Let’s Encrypt и проверить работоспособность. Включены чек‑листы, рекомендации по безопасности и план на случай ошибок.
Важно: перед началом убедитесь, что у вас есть доступ с правами sudo и доменное имя, указывающее на сервер (FQDN), например pgadmin.example.com.
Кому полезно это руководство
- Системным администраторам, которые разворачивают PostgreSQL и pgAdmin на Ubuntu 22.04.
- Разработчикам, которым нужен локальный или удалённый GUI для администрирования PostgreSQL.
- Тем, кто настраивает защищённый (HTTPS) доступ к pgAdmin через Nginx и uWSGI.
В этом материале рассмотрены шаги установки, базовая настройка безопасности, сценарии тестирования и руководство по устранению типичных проблем.
Предварительные требования
- Сервер с Ubuntu 22.04 (64‑bit) и доступ по SSH.
- Непользователь root: учётная запись с правами sudo.
- Полностью квалифицированное доменное имя (FQDN), например pgadmin.example.com.
- Актуальные системные обновления и некоторые вспомогательные пакеты.
Обновите систему:
$ sudo apt update
$ sudo apt upgrade
Установите базовые утилиты (некоторые уже могут быть установлены):
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Важно: в примерах ниже сохраняются пути и имена файлов точно как в оригинале; команды выполняйте под администратором при необходимости.
План руководства
- Установка PostgreSQL 14
- Роли и методы аутентификации
- Создание роли и базы данных
- Включение удалённого доступа и настройка pg_hba.conf
- Установка pgAdmin 4 в виртуальном окружении Python
- Интеграция с uWSGI
- Создание systemd unit для pgAdmin/uWSGI
- Установка SSL (Let’s Encrypt)
- Установка и конфигурация Nginx
- Настройка брандмауэра (ufw)
- Доступ и базовые операции в pgAdmin
- Проверки, безопасность и планы отказа
Шаг 1 — Установка PostgreSQL
Ubuntu 22.04 включает PostgreSQL 14 в стандартных репозиториях. Для установки выполните:
$ sudo apt install postgresql postgresql-contrib
Пакет postgresql-contrib добавляет дополнительные утилиты и расширения. Альтернативно можно подключить официальный репозиторий PostgreSQL и поддерживать версию отдельно.
Добавление GPG‑ключа PostgreSQL:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Добавление APT‑репозитория PGDG:
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Обновите списки пакетов и при необходимости установите пакеты из репозитория:
$ sudo apt update
Проверка состояния сервиса PostgreSQL:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2022-05-16 11:20:35 UTC; 5 days ago
Process: 30544 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 30544 (code=exited, status=0/SUCCESS)
CPU: 2ms
May 16 11:20:35 postgresql systemd[1]: Starting PostgreSQL RDBMS...
May 16 11:20:35 postgresql systemd[1]: Finished PostgreSQL RDBMS.
Вы увидите, что служба включена и запущена.
Совет по производительности: для продакшн‑сервера отрегулируйте shared_buffers, work_mem и другие параметры в /etc/postgresql/14/main/postgresql.conf согласно объёму RAM и нагрузке.
Шаг 2 — Роли PostgreSQL и методы аутентификации
PostgreSQL использует концепцию ролей (roles) для управления доступом. Роль может представлять отдельного пользователя или группу.
Поддерживаемые методы аутентификации:
- trust — доступ без пароля (только при доверенной сети/конфигурации).
- password — парольная аутентификация (md5 или scram‑sha‑256 рекомендуется).
- ident — проверка клиента по TCP (обычно для локальных или доверенных подключений).
- peer — для локальных Unix‑сокетов: проверяется соответствие имени UNIX‑пользователя.
По умолчанию часто используется peer для локального доступа. Это означает, что роль PostgreSQL связывается с UNIX‑учётной записью с тем же именем.
Переключение на системного пользователя postgres:
$ sudo -i -u postgres
Вход в psql:
postgres@howtoforge:~$ psql
В оболочке psql вы увидите приглашение:
psql (14.3 (Ubuntu 14.3-1.pgdg22.04+1))
Type "help" for help.
postgres=#
Выход: введите exit или \q.
Запуск psql одной командой без интерактивного переключения:
$ sudo -u postgres psql
Шаг 3 — Создание новой роли
Роль можно создать двумя способами: командой createuser из командной строки или SQL в psql.
Интерактивное создание роли:
postgres@howtoforge:~$ createuser --interactive
Или под другой учётной записью:
$ sudo -u postgres createuser --interactive
Пример вывода:
Enter name of role to add: navjot
Shall the new role be a superuser? (y/n) y
Через psql:
postgres-# CREATE ROLE username WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'yourpassword';
Проверка списка ролей:
postgres-# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
username | Superuser, Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Рекомендация: в продакшне избегайте широких прав (SUPERUSER) для обычных приложений — выделяйте минимально необходимые привилегии.
Шаг 4 — Создание базы данных
Создать базу можно командой createdb или SQL:
postgres@howtoforge:~$ createdb howtoforge
Или:
$ sudo -u postgres createdb howtoforge
Через psql:
postgres-# CREATE DATABASE howtoforge;
Выдача прав пользователю на базу:
postgres-# GRANT ALL PRIVILEGES ON DATABASE howtoforge TO username;
Список баз данных:
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
howtoforge| postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | username=CTc/postgres
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Шаг 5 — Включение удалённого доступа
По умолчанию PostgreSQL слушает только localhost. Чтобы позволить подключения извне, отредактируйте /etc/postgresql/14/main/postgresql.conf и раскомментируйте/измените listen_addresses:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Сохраните файл и перезапустите сервис:
$ sudo systemctl restart postgresql
Проверка прослушиваемых портов:
$ ss -nlt | grep 5432
Ожидаемый вывод:
LISTEN 0 244 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 244 [::]:5432 [::]:*
Настройка pg_hba.conf для контроля доступа и выбора метода аутентификации (рекомендуется scram-sha-256):
Откройте файл:
$ sudo nano /etc/postgresql/14/main/pg_hba.conf
Примеры записей:
# TYPE DATABASE USER ADDRESS METHOD
# The username can access all databases from all locations using scram-sha256 password
host all username 0.0.0.0/0 scram-sha256
# The username can access only the howtoforge from all locations using scram-sha256 password
host howtoforge username 0.0.0.0/0 scram-sha256
# The username can access all databases from a trusted location (192.168.1.134) without a password
host all username 192.168.1.134 trust
После изменения сохраните и перезапустите PostgreSQL.
Откройте порт в брандмауэре (ufw):
$ sudo ufw allow 5432/tcp
Рекомендуется ограничить доступ только доверенным подсетям:
$ sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Важно: открытый 5432 на весь Интернет — риск. Всегда применяйте шифрование, firewall и допустимые IP‑списки.
Шаг 6 — Установка pgAdmin 4
pgAdmin можно установить как системный пакет (включит Apache), но в этом руководстве мы устанавливаем pgAdmin в Python virtualenv и используем Nginx + uWSGI.
Создайте каталоги данных и логов:
$ sudo mkdir /var/lib/pgadmin
$ sudo mkdir /var/log/pgadmin
Создайте папку приложения:
$ sudo mkdir /opt/pgadmin
Переключитесь в root для установки зависимостей (или используйте sudo):
$ sudo su -
Установите необходимые пакеты Python:
$ apt install build-essential python3-dev python3-venv python3-pip
Создайте виртуальное окружение и активируйте его:
$ python3 -m venv /opt/pgadmin/venv
$ source /opt/pgadmin/venv/bin/activate
Установите pgAdmin и uWSGI:
(venv) root@postgresql:-$ pip install --upgrade pip
(venv) root@postgresql:-$ pip install --upgrade setuptools
(venv) root@postgresql:-$ pip install wheel
(venv) root@postgresql:-$ pip install pgadmin4
(venv) root@postgresql:-$ pip install uwsgi
Запустите установочный скрипт pgAdmin (проверьте путь к Python в venv, у Ubuntu 22.04 это обычно python3.10):
(venv) root@postgresql:-$ python3 /opt/pgadmin/venv/lib/python3.10/site-packages/pgadmin4/setup.py
Следуйте инструкциям, чтобы задать адрес электронной почты администратора и пароль.
Отключите виртуальное окружение и выйдите из root, если нужно:
(venv) root@postgresql:-$ deactivate
(venv) root@postgresql:-$ exit
Создайте системного пользователя pgadmin для запуска процессов:
$ sudo adduser --system --group --home /var/lib/pgadmin --disabled-login --shell /usr/sbin/nologin pgadmin
Передайте права ownership на каталоги (в руководстве используется группа nginx):
$ sudo chown -R pgadmin:nginx /var/lib/pgadmin /var/log/pgadmin /opt/pgadmin
Шаг 7 — Интеграция uWSGI и pgAdmin
Создайте конфигурационный файл uWSGI:
$ sudo nano /opt/pgadmin/pgadmin-uwsgi.ini
Содержимое:
[uwsgi]
socket = /var/lib/pgadmin/pgadmin4.sock
chdir = /opt/pgadmin/venv/lib/python3.10/site-packages/pgadmin4/
module = pgAdmin4:application
threads = 20
processes = 1
mount = /=pgAdmin4:app
manage-script-name = true
chmod-socket = 660
Проверьте, что путь к python и папке site-packages соответствует установленному виртуальному окружению.
Шаг 8 — Создаём systemd service для pgAdmin/uWSGI
Создайте юнит:
$ sudo nano /etc/systemd/system/pgadmin-uwsgi.service
Вставьте:
[Unit]
Description=pgadmin4 on uWSGI
Requires=network.target
After=network.target
[Service]
User=pgadmin
Group=nginx
Environment="PATH=/opt/pgadmin/venv/bin"
ExecStart=/opt/pgadmin/venv/bin/uwsgi --ini /opt/pgadmin/pgadmin-uwsgi.ini
[Install]
WantedBy=multi-user.target
Включите и запустите сервис:
$ sudo systemctl enable pgadmin-uwsgi --now
$ sudo systemctl status pgadmin-uwsgi
Если возникают ошибки, проверьте журналы systemd: sudo journalctl -u pgadmin-uwsgi -b.
Шаг 9 — Установка SSL (Let’s Encrypt)
Установка certbot через snapd:
$ sudo apt install snapd
$ sudo snap install core
$ sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Остановите Nginx временно (Certbot использует порт 80):
$ sudo systemctl stop nginx
Запрос сертификата (замените email и домен):
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d pgadmin.example.com
Сертификаты окажутся в /etc/letsencrypt/live/pgadmin.example.com.
Создайте DH group для улучшения безопасности TLS:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Создайте webroot для автообновления через webroot метод (если будете использовать):
$ sudo mkdir -p /var/lib/letsencrypt
Добавьте ежедневную задачу для обновления сертификата:
$ sudo nano /etc/cron.daily/certbot-renew
Вставьте:
#!/bin/sh
certbot renew --cert-name pgadmin.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сделайте файл исполняемым:
$ sudo chmod +x /etc/cron.daily/certbot-renew
Замечание: certbot может выдавать сертификаты и автоматически настраивать Nginx (при использовании nginx plugin). В нашем сценарии мы используем standalone и настраиваем Nginx вручную.
Шаг 10 — Установка и настройка Nginx
Добавьте официальный репозиторий Nginx (при желании иметь более свежую версию):
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
$ sudo apt update
$ sudo apt install nginx
Проверка версии:
$ nginx -v
nginx version: nginx/1.20.2
Создайте конфигурацию для pgAdmin:
$ sudo nano /etc/nginx/conf.d/pgadmin.conf
Пример конфига:
server {
listen 80;
listen [::]:80;
server_name pgadmin.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name pgadmin.example.com;
ssl_certificate /etc/letsencrypt/live/pgadmin.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pgadmin.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/pgadmin.example.com/chain.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_timeout 5m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location /pgadmin4/ {
include /etc/nginx/uwsgi_params;
uwsgi_pass unix:/tmp/pgadmin4.sock;
}
}
Примечание: проверьте путь сокета uwsgi_pass — в нашем uWSGI конфиге используется /var/lib/pgadmin/pgadmin4.sock. Согласуйте пути.
Добавьте server_names_hash_bucket_size если потребуется:
$ sudo nano /etc/nginx/nginx.conf
Добавьте перед include /etc/nginx/conf.d/*.conf; строку:
server_names_hash_bucket_size 64;
Проверка конфигурации и перезапуск:
$ sudo nginx -t
$ sudo systemctl restart nginx
Шаг 11 — Настройка брандмауэра
Если вы используете ufw, откройте HTTP/HTTPS порты:
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
И убедитесь, что порт PostgreSQL открыт только для доверенных подсетей (см. выше).
Проверка статуса ufw:
$ sudo ufw status
Пример вывода:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
5432/tcp ALLOW 192.168.1.0/24
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Шаг 12 — Доступ и базовая работа в pgAdmin
Установите пароль для системной роли postgres (если ещё не установлен):
$ sudo -u postgres psql
postgres-# \password postgres
Enter new password for user "postgres":
Enter it again:
postgres-# exit
Измените владельца Unix‑сокета uWSGI (если требуется):
$ sudo chown nginx:nginx /var/lib/pgadmin/pgadmin4.sock
Откройте в браузере https://pgadmin.example.com — вы увидите экран входа.

Войдите под пользователем, созданным в шаге установки pgAdmin.
После входа добавьте локальный сервер PostgreSQL (Add New Server). В поле Hostname укажите localhost, порт можно оставить пустым (будет использовать стандартный 5432), сохраните пароль.

Пример добавления сервера — нажмите Add New Server и заполните вкладку Connection.

Введите имя подключения и во вкладке Connection задайте Hostname=localhost и пароль.

После подключения вы увидите панель мониторинга сервера.

Создание таблицы через GUI: разверните PostgreSQL -> Databases -> ваша база -> Schemas -> Tables. Правый клик по Tables -> Create -> Table.

Выберите Create -> Table:

Задайте имя таблицы и колонок (ID как Primary key, Name varchar(30)).

Добавление колонок:

Для вставки данных можно использовать INSERT Script:

Пример SQL для вставки (проверьте кавычки и корректность значений):
INSERT INTO public."table-01"(
"ID", "Name")
VALUES (1, 'Navjot'), (2, Adam), (3, 'Roxy');
Обратите внимание: в примере содержится некорректная запись (2, Adam) — литерал строки должен быть заключён в кавычки: ‘Adam’. Неисправные SQL‑лiterals приведут к ошибке исполнения.
Выполните запрос и просмотрите данные через View/Edit Data -> All Rows.

Если вы хотите использовать встроенные утилиты бэкапа/восстановления в pgAdmin, укажите путь к бинарникам PostgreSQL: File -> Preferences -> Paths -> Binary paths. Укажите /usr/bin для PostgreSQL 14 и отметьте чекбокс.


Сохранение путей позволит pgAdmin запускать pg_dump/pg_restore из интерфейса.
Дополнительная ценность: безопасность, проверка и план отката
Ниже собраны практики, чек‑листы и инструкции для устойчивой, безопасной и проверяемой установки.
Фактбокс: ключевые числа
- ОС: Ubuntu 22.04
- PostgreSQL: 14
- pgAdmin: 4 (устанавливается в venv)
- Порт PostgreSQL по умолчанию: 5432
- Порт HTTPS: 443
Рекомендации по безопасности
- Используйте scram-sha-256 для паролей в pg_hba.conf.
- Ограничьте доступ к порту 5432 по IP‑адресам через ufw или облачный security group.
- Всегда включайте HTTPS для pgAdmin и используйте современные TLS‑настройки (TLSv1.2/1.3).
- Не запускайте pgAdmin как root — используйте отдельного системного пользователя pgadmin.
- Регулярно обновляйте систему и пакеты безопасности.
- Разработайте ротацию паролей и политику доступа для администратора БД.
Проверки работоспособности (Acceptance Criteria)
Критерии приёмки — что проверить после установки:
- Сервис PostgreSQL активен и слушает на 5432: ss -nlt | grep 5432.
- Сервис pgadmin-uwsgi активен: systemctl status pgadmin-uwsgi.
- Nginx отвечает на HTTPS: curl -kI https://pgadmin.example.com.
- Вход в pgAdmin с учётными данными администратора возможен.
- Подключение pgAdmin к локальной БД успешно.
- Бэкап с помощью pg_dump через GUI или CLI работает.
Playbook: краткий SOP для развёртывания (сводка команд)
- Обновить систему: sudo apt update && sudo apt upgrade
- Установить PostgreSQL: sudo apt install postgresql postgresql-contrib
- Настроить listen_addresses и pg_hba.conf, перезапустить PostgreSQL
- Установить Python venv, pgAdmin и uWSGI в /opt/pgadmin
- Создать uWSGI ini и systemd unit, включить сервис
- Установить Certbot, получить сертификат
- Установить Nginx, настроить conf.d/pgadmin.conf и перезапустить
- Открыть порты в ufw и протестировать доступ
Резервное копирование и восстановление (микро‑методология)
- Резервное копирование: периодические pg_dump (полный бекап базы) или pg_basebackup (для физического бэкапа).
- Хранение: копии на удалённом хранилище (S3, NFS), с версионированием и шифрованием.
- Тест восстановления: регулярная проверка восстановления из резервной копии на тестовой машине.
Пример ручного бекапа одной базы:
$ sudo -u postgres pg_dump -F c -b -v -f /var/backups/howtoforge.dump howtoforge
Восстановление:
$ sudo -u postgres pg_restore -d howtoforge /var/backups/howtoforge.dump
Стратегии миграции и обновления PostgreSQL
- Для миграции между мажорными версиями используйте pg_upgrade или логическую репликацию.
- Тестируйте pg_upgrade на копии данных перед применением в продакшн.
- Планируйте окно обслуживания и обратный план (rollback), если обновление сломает совместимость приложений.
Тестовые сценарии и критерии приёмки
- Проверка установки PostgreSQL: команда psql возвращает приглашение.
- Создание роли и базы: CREATE ROLE, CREATE DATABASE выполняются без ошибок.
- Удалённый доступ: подключение с другой машины к порту 5432 в рамках разрешённой сети.
- Веб‑доступ к pgAdmin: загрузка страницы логина, успешный вход и добавление сервера.
- SSL: сертификат валиден и цепочка доверия полна (openssl s_client -connect).
Ролe‑ориентированные чек‑листы
DBA:
- Проверить параметры postgresql.conf (wal, checkpoints, shared_buffers).
- Настроить регулярные бэкапы и тесты восстановления.
- Управлять ролями и правами доступа.
SysAdmin:
- Обновить ОС и пакеты.
- Настроить systemd, nginx, firewall и certbot.
- Обеспечить мониторинг и сбора логов.
Dev:
- Подключиться через pgAdmin и протестировать схемы и запросы.
- Тестировать миграции и откаты миграций.
Технический чеклист безопасности (быстрая проверка)
- scram-sha-256 в pg_hba.conf для удалённых подключений.
- Ограничение IP в ufw/SG.
- TLS 1.2/1.3 и современный набор шифров в Nginx.
- Правильные права на сокеты и директории (/var/lib/pgadmin).
- Логи и мониторинг (journalctl, pg_log).
Устранение проблем: runbook
Проблема: Nginx не стартует после конфигурации
- Проверьте sudo nginx -t.
- Посмотрите sudo journalctl -u nginx -b.
- Убедитесь, что файл конфигурации не содержит опечаток и пути сертификатов верны.
Проблема: pgAdmin не доступен, 502 Bad Gateway
- Проверьте systemctl status pgadmin-uwsgi и журнал: sudo journalctl -u pgadmin-uwsgi -b.
- Убедитесь, что uWSGI создал сокет и права на него позволяют nginx читать.
- Проверьте соответствие пути сокета в nginx и uWSGI ini.
Проблема: при добавлении сервера в pgAdmin соединение отклоняется
- Проверьте, что PostgreSQL слушает на localhost/0.0.0.0 и порт 5432.
- Убедитесь, что пароль пользователя postgres установлен и метод аутентификации в pg_hba.conf позволяет подключение.
Полезные подсказки и распространённые ошибки
- Ошибка при вставке: неверный синтаксис SQL. Проверяйте кавычки вокруг строковых литералов.
- При установке в venv используйте тот же Python, что доступен в /opt/pgadmin/venv/bin.
- Если certbot не может получить порт 80, остановите временно Nginx: sudo systemctl stop nginx.
Краткое руководство по переходу на продакшн
- Тестируйте конфигурации в staging среде.
- Настройте мониторинг (Prometheus, pg_stat_statements) и алерты.
- Автоматизируйте бэкапы и проверки восстановления.
- Планируйте обновления с резервными копиями и проверкой совместимости.
Однострочный глоссарий
- role — объект аутентификации и авторизации в PostgreSQL; может быть пользователем или группой.
- pg_hba.conf — файл контроля доступа PostgreSQL (host-based authentication).
- pg_dump/pg_restore — утилиты логического бэкапа и восстановления PostgreSQL.
- uWSGI — приложение‑сервер WSGI для развёртывания Python‑приложений за Nginx.
Заключение
Вы установили PostgreSQL 14 и pgAdmin 4 на Ubuntu 22.04, настроили роли и базу данных, включили удалённый доступ, развернули pgAdmin в virtualenv через uWSGI и проксировали через Nginx с SSL. Дальше:
- Внедрите мониторинг и бэкапы.
- Приведите конфигурации безопасности в соответствие с политиками вашей организации.
- Регулярно тестируйте процедуры восстановления.
Если остались вопросы или возникла ошибка при выполнении шагов — опишите её с журналами и командой, которую выполняли; это поможет быстро найти решение.
Важно
- Всегда ограничивайте доступ к 5432 и используйте надежные пароли.
- Держите резервные копии в отдельном хранилище.
Спасибо за внимание. Удачной настройки и безопасной эксплуатации!
Похожие материалы
Троян Herodotus: как он действует и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей PivotTable в Excel — руководство
Включить новый Пуск в Windows 11 — инструкция
Дубликаты Диспетчера задач в Windows 11 — как исправить