Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Где хранятся настройки аутентификации
Настройки аутентификации хранятся в файле /etc/postgresql/<номер_версии>/main/pg_hba.conf.
Настройка "по умолчанию" после установки postgresql
После установки настройки выглядят так:
Блок кода |
---|
local all postgres peer local all all peer host all all 0.0.0.0/0 md5 |
Беспарольная аутентификация локальных подключений с помощью собственной БД пользователей
Блок кода |
---|
local all all peer |
Примеры:
Command Title createdb <имя_БД> createdb: не удалось подключиться к базе template1: ВАЖНО: роль <имя_пользователя> не существует Пояснение: по умолчанию подключение выполняется к локальной машине (localhost). При выполнении команды автоматически определено имя пользователя (текущий пользователя), и такое имя не найдено в собственной БД пользователей (далее - БДП). Отказ в выполнении.
Регистрация текущего пользователя (роли) в БДП:
Command sudo -u postgres psql -c "CREATE ROLE $USER LOGIN;"
Пояснение: имя роли, регистрируемое в БДП не обязательно должно совпадать с именем существующего пользователя ОС, но при работе с включенным МРД такие роли не смогут получить авторизацию, см. следующий пункт. Далее предполагается, что имя роли совпадает с именем текущего пользователя;
Command Title createdb <имя_БД> createdb: не удалось подключиться к базе template1: ВАЖНО: error obtaining MAC configuration for user "<имя_пользователя>"
Пояснение: аутентификация пользователя выполнена. Возникшая ошибка - не ошибка аутентификации, а ошибка авторизации (назначения мандатных прав) при включенной поддержке МРД в СУБД. Для устранения ошибки либо выключить МРД (см. документацию), либо явно назначить классификационную метку пользователю и предоставить служебному пользователю postgres право на её чтение, например, для текущего пользователя:
Command sudo pdpl-user -l 0:0 $USER
sudo setfacl -m u:postgres:r /etc/parsec/macdb/`id -u`Command Title createdb <имя_БД> createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данных
Пояснение: аутентификация и авторизация пользователя выполнена. Возникающая ошибка - не ошибка аутентификации, и не ошибка авторизации, а результат получения при авторизации недостаточных прав, как и указано в описании ошибки.
Парольная аутентификация внешних подключений в БДП
Блок кода |
---|
host all all 0.0.0.0/0 md5 |
Пример:
Command Title createdb -h <IP-адрес> <имя_БД> Пароль: Пояснение: Пояснение: по умолчанию подключение выполняется к локальной машине (localhost), но в этом примере явно задана опция -h, указывающая адрес, к которому нужно подключаться. При выполнении команды автоматически определено имя пользователя (текущий пользователя), подключение определено как внешнее, и в соответствии с правилом для внешних запрошен пароль.
Задание пароля в БДП:
Command sudo -u postgres psql -c "ALTER USER $USER WITH PASSWORD '12345<пароль>';"
Command Title createdb -h <IP-адрес> <имя_БД> Пароль:
createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данныхПояснение: после ввода пароля, заданного в БДП, аутентификация и авторизация пройдены успешно, но права на создание БД отсутствуют.
Аутентификация внешних подключений с использованием PAM
Блок кода |
---|
host all all 0.0.0.0/0 pam |
Информация |
---|
После смены типа аутентификации в конфигурационном файле для актуализации изменений перезапустить СУБД. |
В качестве пароля использовать пароль пользователя в ОС:
Command Title createdb -h <IP-адрес> <имя_БД> Пароль:
Пароль:
Пароль:
createdb: не удалось подключиться к базе template1: ВАЖНО: пользователь "<имя_пользователя>" не прошёл проверку подлинности (PAM)
ВАЖНО: пользователь "<имя_пользователя>" не прошёл проверку подлинности (PAM)Для устранения ошибки предоставить служебному пользователю postgresql право чтения файла /etc/shadow:
Command sudo setfacl -m u:postgres:r /etc/shadow
После предоставления служебному пользователю postgresql право чтения файла /etc/shadow аутентификация и авторизация по паролю ОС (паролю из /etc/shadow) выполняются успешно:
Command Title createdb -h <IP-адрес> <имя_БД> Пароль:
createdb: создать базу данных не удалось: ОШИБКА: нет прав на создание базы данных