В статье описана установка PostgreSQL 13 на Ubuntu 20.04, создание базы данных и настройка удаленного к ней подключения.
Перед установкой обновите систему командой
sudo apt update
sudo apt -y upgrade
После обновления системы выполните перезагрузку, чтобы запустить новое ядро. Можно использовать команды reboot
или init 6
.
Добавление репозитория PostgreSQL 13 в Ubuntu
Добавьте репозиторий PostgreSQL
sudo apt -y install vim bash-completion wget
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ '`lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
Установка PostgreSQL 13
Установите PostgreSQL 13:
sudo apt update
sudo apt install postgresql-13 postgresql-client-13
Если после установки сервер баз данных не запустился, то выполните запуск командой:
sudo pg_ctlcluster 13 main start
Проверка соединения с PostgreSQL
Во время установки автоматически создается пользователь postgres. Этот пользователь имеет полный доступ суперадминистратора ко всему экземпляру PostgreSQL. Системный пользователь, вошедший в систему, должен иметь права sudo перед переключением на эту учетную запись.
sudo su - postgres
Чтобы изменить пароль пользователя на надёжный, введите:
psql -c "alter user postgres with password 'YourSuperPass';"
Если PostgreSQL уже запущен, то укажите запрос:
alter user postgres with password 'YourSuperPass';
Запустите командную строку PostgreSQL:
psql
psql (13.3 (Ubuntu 13.3-1.pgdg20.04+1))00
Введите help
, чтобы получить справку.
Детализация подключения:
\conninfo
Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/var/run/postgresql", порт "5432".
Создание базы данных
Создайте базу данных:
CREATE DATABASE MYDB;
CREATE DATABASE
Создайте пользователя базы данных с паролем
CREATE USER myuser WITH ENCRYPTED PASSWORD '123';
CREATE ROLE
Назначьте права созданному пользователю в рамках указанной базы данных
GRANT ALL PRIVILEGES ON DATABASE MYDB to myuser;
GRANT
Предоставьте созданному пользователю права создавать роли. Эти права необходимы для работы с r_keeper:
alter role myuser with createrole;
ALTER ROLE
Вывести список баз данных
\l
postgres=# \l
Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа
-----------+----------+-----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 |
MYDB | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 |
template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 строки)
Выход из psql
\q
Выход из суперпользователя postgres
exit
logout
Настройка удалённого подключения
PostgreSQL 13 на Ubuntu по умолчанию принимает соединения только от localhost. В производственных обычно используют сервер базы данных и подключенные к нему удаленные клиенты.
Разрешение удаленного подключения
Чтобы разрешить удаленные подключения, отредактируйте файл конфигурации PostgreSQL:
sudo nano /etc/postgresql/13/main/postgresql.conf
Откроется конфигурационный файл. В нем раскоментируйте или добавьте строчку на выбор:
- прослушивать все интерфейсы:
listen_addresses = '*' # Listen on all interfaces
- прослушивать только на заданных адресах:
listen_addresses = '192.168.1.101' # Listen on specified private IP address
В нашем случае выбран адрес
192.168.1.101
, у вас будет другой.
Для текстового редактора nano:
- Чтобы сохранить изменения в файле используйте сочетание клавиш
ctrl + o
- Для выхода из режима редактирования файла используйте
ctrl + x
.
Разрешение приема удаленных подключений
Настройте PostgreSQL на прием удаленных подключений от разрешенных хостов. Перейдите в конфигурационный файл:
sudo nano /etc/postgresql/13/main/pg_hba.conf
Раскоментируйте или добавьте новую строчку на выбор:
- прием удаленных подключений от всех
host all all 0.0.0.0/0 md5 # Accept from anywhere
- прием удаленных подключений от разрешенных подсетей
host all all 10.10.10.0/24 md5 # Accept from trusted subnet
После изменения перезапустите службу postgresql.
sudo systemctl restart postgresql
Проверьте адрес прослушивания.
netstat -tunelp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 123 4698674 - tcp6 0 0 :::5432 :::* LISTEN 123 4698675
PostgreSQL настроен и готовк к подключению удаленных клиентов.