Введение.
Продолжая изучение PgSQL переходим к рассмотрению специальной учётной записи postgres. Ранние мы кратко рассказали о пользователе postgres, теперь, в PostgreSQL часть 3, рассмотрим этот вопросе более подробно.
Пользователь postgres.
При установке БД, создаётся пользователь, который регистрируется в операционной системе и имеет имя — postgres. Пользователь обладает ролью суперпользователя для кластера PqSQL и методом аутентификации из «коробки» trust.
Атрибуты пользователя postgres.
$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)
Метод trust позволяет пользователю подключённому к консоле сервера входить в профиль postgres без пароля .
Многие сервисные приложения требуют, при конфигурации своих служб, устанавливать пароль к своей БД. Сервер PqSQL, предлагает несколько вариантов аутентификации, остановимся на методе аутентификации md5. Что бы этот метод заработал, необходимо внести изменения в файл /var/lib/pgsql/data/pg_hba.conf. Перед выполнением создадим резервную копию файла pg_hba.conf
//создание резервной копию файла
-bash-3.2$ cp -n /var/lib/pgsql/data/pg_hba.conf pg_hba.conf.orig
//возврат старой копии
-bash-3.2$ cp pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf
Запись /var/lib/pgsql/data/pg_hba.conf до редактирования:
-bash-3.2$ psql
postgres=# SHOW hba_file;
hba_file
---------------------------------
/var/lib/pgsql/data/pg_hba.conf
(1 строка)
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
Устанавливаем пароль для суперпользователя postgres. Если пароль не задан, стоит NULL — пройти регистрацию по паролю этот пользователь не сможет
Пароли пользователей БД PqSQL находятся в системном каталоге /var/lib/pgsql/data/pg_authid. Управлять паролями можно используя SQL-запросы CREATE ROLE и ALTER ROLE или командой password входящей в сборник утилиты pqsql.
-bash-3.2$ psql
postgres=# \password postgres
Введите новый пароль:
Повторите его:
postgres=# \q
Вносим изменения в столбец database — БД replication нас сейчас не интересуют — все базы находятся на одном сервере, реплик нет
-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
Перегружаем сервер для перечитывания новых значений.
bash-3.2$ psql
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 строка)
\q
Проверяем наши действия на ошибки.
-bash-3.2$ psql
postgres=# SELECT line_number, error FROM pg_hba_file_rules WHERE error IS NOT NULL;
line_number | error
-------------+-------
(0 строк)
\q
Смотрим какой метод аутентификации представлен после наших действий.
-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
md5
(1 строка)
\q