Домой О курсе Установка сервера баз данных ---------------------------- ![][01-postgis-09] В Ubuntu 16.04 в репозитории доступен [PostgreSQL 9.5.11](http://www.postgresql.org/), который может быть установлен с помощью менеджера управления пакетами. Установка сервера: sudo apt install postgresql Запуск, остановка, перезапуск сервера: sudo systemctl start|stop|restart postgresql В результате установки также будет установлен консольный клиент [psql](https://www.postgresql.org/docs/9.5/static/app-psql.htm). Управление пользователями на уровне хоста ----------------------------------------- При установке PostgreSQL в системе и в БД создаётся пользователь с именем `postgres` (суперпользователь). Все настройки доступа к базе данных на уровне хоста располагаются в файле `/etc/postgresql/9.5/main/pg_hba.conf`. Настройки для пользователя `postgres` по умолчанию имеют вид: local all postgres peer Это означает, что пользователь `postgres` (роль в БД) с локального хоста (на котором установлен PostgreSQL) имеет доступ ко всем базам данных, используемый метод аутентификации - `peer`. Суть этого метода заключается в том, что при доступе к БД в качестве имени роли используется текущее имя пользователя операционной системы. Создание баз данных и пользователей ----------------------------------- Обычно, работа с базами данных не осуществляется от имени `postgres` (из соображений безопасности). Поэтому создадим для наших задач на уровне БД отдельного пользователя, назовём его `pguser` (пароль `topsecret`): sudo -u postgres createuser -P -e pguser Мы создали пользователя, который не обладает правами суперпользователя, не может создавать базы данных и другие роли (см. [документацию](http://www.postgresql.org/docs/9.5/static/sql-createrole.html)). От имени `postgres` создадим базу данных `dbvega` и сделаем пользователя `pguser` её владельцем: sudo -u postgres createdb -O pguser -E UTF8 dbvega Доступ с локального хоста ------------------------- Для доступа к PostgreSQL с локального хоста от имени любого пользователя, отличного от `postgres` будем использовать парольный метод аутентификации `md5`. Для этого в файле `pg_hba.conf` отредактируем соответствующую строку и приведём её к виду: local all all md5 Перезагружаем сервер: sudo systemctl restart postgresql Теперь при подключении к СУБД необходимо явно указывать имя того пользователя от которого осуществляется подключение: psql -d dbvega -U pguser После чего сервер будет автоматически запрашивать пароль пользователя. Доступ с удалённых хостов ------------------------- Для разрешения доступа к серверу с других хостов, необходимо выполнить 2 настройки: 1. В файле `/etc/postgresql/9.5/main/postgresql.conf` раскомментировать строку `listen_addresses = 'localhost'` и заменить её на `listen_addresses = '*'`. 2. В файл `/etc/postgresql/9.5/main/pg_hba.conf` добавить строку вида: host all all 10.22.0.0/24 md5 После чего перезапускаем сервер: sudo systemctl restart postgresql Теперь с хостов, расположенных в подсети, указанной в файле `pg_hba.conf` (`10.22.0.0/24`) к серверу можно подключиться, используя следующую команду: psql -h 10.22.0.9 -d dbvega -U pguser После ввода данной команды будет запрошен пароль пользователя `pguser`. В данном примере PostgreSQL функционирует в подсети `10.22.0.0/24` по адресу `10.22.0.9`. [01-postgis-09]: ../img/01-postgis-09.png