PostgreSQL, он же Postgres, — серьёзная база, которая умеет и простые CRUD-операции, и такие вещи, от которых MySQL тихо плачет в углу. Но если поставить её криво, потом будешь неделями ловить баги и глюки.
Давай без романтики: ставим Postgres на Ubuntu 20.04, настраиваем роли и, если надо, включаем удалённый доступ. Минимум воды, максимум пользы.
Шаг 1. Установка
Ubuntu уже умеет ставить Postgres из своих реп. Просто:
sudo apt update
sudo apt install postgresql postgresql-contrib
postgresql-contrib — это доп. пакеты с полезными плюшками. Лучше поставить сразу, чем потом материться, что чего-то не хватает.
Шаг 2. Проверка, что оно живо
Postgres стартует автоматически после установки. Проверим версию:
sudo -u postgres psql -c "SELECT version();" Если что-то выдал — значит, жив.
Шаг 3. Понимаем, кто тут главный
В Postgres всё завязано на ролях. Роль может быть отдельным пользователем или целой бандой пользователей. От того, как ты их настроишь, зависит, кто куда имеет доступ. Методы аутентификации:
- trust — впускает без пароля (осторожно, дыра в заборе)
- password/md5/scram-sha-256 — нормальный вариант с паролем
- ident/peer — проверка по системному имени пользователя
Всё это живёт в /etc/postgresql/12/main/pg_hba.conf.
Шаг 4. Пользователь postgres
При установке создаётся суперпользователь postgres. Он как root, только для базы.
Войти под ним:
sudo su - postgres
psql
Выйти:
\q Можно и без переключения:
sudo -u postgres psql
Шаг 5. Создаём своего пользователя и базу
Например, надо юзера john и базу johndb:
sudo su - postgres -c "createuser john"
sudo su - postgres -c "createdb johndb" Даем права:
GRANT ALL PRIVILEGES ON DATABASE johndb TO john;
Шаг 6. Включаем удалённый доступ
По дефолту Postgres слушает только локалку (127.0.0.1). Чтобы пускал снаружи:
В файле /etc/postgresql/12/main/postgresql.conf меняем:
listen_addresses = '*' Перезапуск:
sudo service postgresql restart
Проверка:
ss -nlt | grep 5432
Должен слушать 0.0.0.0:5432.
Шаг 7. Настройка доступа в pg_hba.conf
Примеры:
# jane во все базы с любого IP, пароль md5 host all jane 0.0.0.0/0 md5
# jane только в janedb с любого IP
host janedb jane 0.0.0.0/0 md5
# jane во все базы без пароля, если зашла с 192.168.1.134
host all jane 192.168.1.134 trust
Шаг 8. Открываем порт в UFW
Например, пускаем только подсеть 192.168.1.0/24:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Итог
- Просто поставить:
apt install postgresql postgresql-contrib - Пользователь и база — через
createuserиcreatedb - Удалёнка — правим
listen_addressesиpg_hba.conf, не забываем про firewall
Не давай trust всему миру. Иначе однажды кто-то поставит в твою базу «майнкрафт-сервер» без спроса.
0 комментариев