Установка PostgreSQL (Ubuntu)
🐘 Установка и настройка PostgreSQL на Ubuntu
Этот гайд поможет вам установить PostgreSQL на Ubuntu, создать базу данных и пользователя, настроить удалённое подключение и устранить типичные ошибки.
📦 Установка PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib -y
✅ Проверка установки
sudo systemctl status postgresql
Вы должны увидеть надпись "active (running)" — это значит, что PostgreSQL запущен.
🧑💻 Создание базы данных и пользователя
Войти в PostgreSQL от имени суперпользователя:
sudo -u postgres psql
Создать базу данных:
CREATE DATABASE your_database_name;
Создать пользователя с паролем:
CREATE USER your_username WITH PASSWORD 'your_password';
Выдать права:
GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_username;
Выйти:
\q
Проверить созданные БД и пользователей:
sudo -u postgres psql \l # список баз \du # список пользователей
🌐 Настройка удалённого доступа
Найти установленную версию PostgreSQL:
ls /etc/postgresql/
Отредактировать конфиг:
sudo nano /etc/postgresql/14/main/postgresql.conf
Найти строку:
#listen_addresses = 'localhost'
Изменить на:
listen_addresses = '*'
Отредактировать правила доступа:
sudo nano /etc/postgresql/14/main/pg_hba.conf
Добавить в конец:
host all all 0.0.0.0/0 md5
💡 Вместо
md5
можно использоватьscram-sha-256
(для PostgreSQL 14+)Перезапустить PostgreSQL:
sudo systemctl restart postgresql
Открыть порт:
sudo ufw allow 5432/tcp
🔗 Строка подключения
Формат:
postgres://username:password@hostname:port/database_name
Пример:
postgres://your_username:your_password@192.168.1.100:5432/your_database_name
Пояснение:
username — имя пользователя
password — пароль
hostname — IP или домен сервера
port — порт PostgreSQL (по умолчанию 5432)
database_name — имя базы
💡 Некоторые приложения используют postgresql://
вместо postgres://
💬 Основные команды PostgreSQL
Подключиться к базе (удалённо):
psql -h hostname -U username -d database_name
Подключиться локально:
psql -U username -d database_name
Внутри psql:
\l
— список баз\du
— список пользователей\c имя_бд
— подключение к базе
🧩 Устранение ошибок
🚫 Не удаётся подключиться удалённо
Проверить, слушает ли PostgreSQL внешний интерфейс:
sudo netstat -tuln | grep 5432
💡 Если
netstat
не установлен:sudo apt install net-tools
Проверить статус фаервола:
sudo ufw status
Убедитесь, что в
pg_hba.conf
есть строка для 0.0.0.0/0 и нужного метода авторизации.
❌ Ошибка авторизации
Проверьте логин/пароль
Убедитесь, что у пользователя есть права на подключение с внешнего IP
📛 База данных не существует / доступ запрещён
Убедитесь, что база существует:
\l
Проверьте права:
SELECT datname, datacl FROM pg_database WHERE datname = 'your_database_name';
⚠️ "Permission denied for schema public"
Если видите ошибку доступа к schema public:
Пример строки подключения:
postgres://root:gradient@127.0.0.1:5432/gradient
Решение:
sudo -u postgres psql
\c gradient
GRANT ALL ON SCHEMA public TO root;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO root;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO root;
ALTER SCHEMA public OWNER TO root;
🧭 Быстрые команды
🔁 Управление службой PostgreSQL
sudo systemctl start postgresql
sudo systemctl stop postgresql
sudo systemctl restart postgresql
sudo systemctl status postgresql
💾 Работа с базой
Резервная копия:
pg_dump -U username database_name > backup.sql
Восстановление:
psql -U username database_name < backup.sql
Last updated