Введение.
Продолжая изучение PgSQL переходим к рассмотрению специальной учётной записи postgres. Ранние мы кратко упоминали о пользователе postgres, см.часть2, теперь, в PostgreSQL Linux часть3, рассмотрим этот вопросе более подробно.
Все статьи посвящённые PostgreSQL см.
тэг БД или поиск postgres
Подготовка PostgreSQL Linux часть 3.
- Стенд
- Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
- PostgreSQL X.X
- метод аутентификации md5
- PostgreSQL X.X
- Simply Linux, имя: lin-sl, IP=10.0.2.30
- Пользователь. имя: trt
- Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
Пользователь PostgreSQL Linux часть3.
При установке БД, создаётся пользователь, который регистрируется в операционной системе с именем — postgres. Учётная запись postgres обладает ролью суперпользователя, для кластера PqSQL и методом аутентификации, из «коробки», trust.
Пример атрибутов пользователя postgres для PostgreSQL Linux часть3.
$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)
Многие программы требуют при конфигурации своих служб , устанавливать пароль для работы с БД.
- PostgreSQL предлагает несколько вариантов аутентификации:
- trust
- password
- scram-sha-256
- md5
- password
- GSSAPI
- SSPI
- ident
- peer
- LDAP
- RADIUS
- по сертификату SSL
- RAM
- BSD
Из списка приведённого выше, остановимся на методе аутентификации md5, как более распространённым. Для включения md5, необходимо внести изменения в файл /var/lib/pgsql/data/pg_hba.conf.
Перед выполнением создадим резервную копию файла pg_hba.conf.
$ sudo su - postgres -s /bin/bash
-bash-3.2 cp -n /var/lib/pgsql/data/pg_hba.conf pg_hba.conf.orig
Возврат старой копии файла pg_hba.conf, если требуется.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ cp pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf
Смотрим содержание файла pg_hba.conf.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SHOW hba_file;
hba_file
---------------------------------
/var/lib/pgsql/data/pg_hba.conf
(1 строка)
Из листинга показанного выше видно, что файл pg_hba.conf содержит одну строку.
Создадим запрос для демонстрации содержимого файла pg_hba.conf до редактирования.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules;
line_number | type | database | user_name| address | auth_method
-------------+-------+---------------+-----------+-----------+-------------
84 | local | {all} | {all} | | trust
86 | host | {all} | {all} | 127.0.0.1 | trust
88 | host | {all} | {all} | ::1 | trust
91 | local | {replication} | {all} | | trust
92 | host | {replication} | {all} | 127.0.0.1 | trust
93 | host | {replication} | {all} | ::1 | trust
(6 строк)
\q
Как видно из листинга в качестве метода аутентификации, для PostgreSQL Linux часть3, стоит trust.
Установка пароля для PostgreSQL Linux часть3.
Управление паролями и ролями в PqSQL осуществляется с помощью нескольких SQL команд. Выбор зависит от задач которые необходимы для работы.
- Список команд для управления ролями и паролями PqSQL:
- CREATE ROLE
- ALTER ROLE
- password — входит в сборник утилиты pqsql.
Для нашей задачи выбираем команду password.
Дополнительные сведения про роли и пароли читайте в следующих частях.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# \password postgres
Введите новый пароль:
Повторите его:
postgres=# \q
Вносим изменения в столбец database, БД replication нас сейчас не интересует, все базы находятся на одном сервере, реплик нет
$ sudo su - postgres -s /bin/bash
-bash-3.2$ echo 'local all all md5' > /var/lib/pgsql/data/pg_hba.conf
-bash-3.2$ echo 'host all all all md5' >> /var/lib/pgsql/data/pg_hba.conf
Перегружаем сервер для перечитывания новых значений.
$ sudo su - postgres -s /bin/bash
bash-3.2$ psql
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 строка)
\q
Проверяем наши действия на ошибки.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SELECT line_number, error FROM pg_hba_file_rules; line_number | error
-------------+-------
1 |
2 |
(2 строки)
Смотрим какой метод аутентификации представлен теперь.
$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules;
line_number | type | database | user_name | address | auth_method
-------------+-------+----------+-----------+---------+-------------
1 | local | {all} | {all} | | md5
2 | host | {all} | {all} | all | md5
(2 строки)
\q
Проверяем с помощью параметра password_encryption, алгоритм хранения пароля.
-bash-3.2$ psql
postgres=# SHOW password_encryption;
password_encryption
---------------------
scram-sha-256
(1 строка)
\q
Таким образом мы установили метод аутентификации md5 с алгоритмом шифрования, scram-sha-256.
Заключение.
В приведённом выше примеры было показано, как установить пароль и метод аутентификации с шифрованием для привилегированного пользователя postgres. Для этого мы использовали самый распространённый метод аутентификации md5.
В дальнейшем, при широком использовании БД PostgreSQL, возникнет потребность доступа к базам данных других пользователей, использующих табличное пространство PqSQL в своей работе. Как создавать новых пользователей и управлять пользовательскими учётными записями, читайте в следующей части цикла статей о PostgreSQL.
Полезные ссылки.
- Сайт PostgreSQL
- Форум PostgreSQL
- Документация PostgreSQL