Установка 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