Отказ в аутентификации
Отказ в аутентификации
Если попытка аутентификации завершается неудачей, PostgreSQL обычно предоставляет содержательную информацию об ошибке, не ограничиваясь простым отказом. Ниже перечислены некоторые распространенные сообщения об ошибках с краткими пояснениями.
- FATAL I: user "testuser" does not exist. Имя пользователя не найдено в системной таблице pg_shadow; это означает, что учетная запись пользователя не существует. Создание новых пользователей описано в главе 10.
- FATAL I: Database "testdb" does not exist In the system catalog. Указанная база данных не существует. Если при подключении к PostgreSQL имя базы данных не указано, по умолчанию используется имя текущего пользователя.
- No pg_hba.conf entry for host 123.123.123.1. user testuser, database testdb. Связь с сервером была установлена, но сервер не принял подключение. Причина отказа заключается в том, что сервер не находит в файле pg_hba.conf запись для пользователя testuser, обращающегося к базе данных testdb со своего IP-адреса (123.123.123.1).
- Password authentication failed for user 'testuser1. Связь с сервером была установлена, но в подключении отказано из-за неправильного пароля. Проверьте введенный пароль и убедитесь в его правильности. Далее следует проверить настройку аутентификационных пакетов (например, Kerberos или Ident), если они используются в вашей системе.
Проверьте, назначен ли пароль указанному пользователю. Если файл pg_hba.conf настроен на проверку паролей, эта проверка производится в любом случае, даже если пароль не указан. Всем пользователям без пароля присваивается пароль NULL. Когда такой пользователь пытается подключиться без указания пароля, пароль NULL сравнивается с NULL — результат равен false.
С другой стороны, если пользователь пытается ввести пароль (пусть даже пустую строку), введенное значение также сравнивается с NULL и результат по-прежнему остается равным false. Если в системе требуется аутентификация с помощью паролей, вы должны назначить пароли всем пользователям. Если какому-либо пользователю не будет назначен пароль, аутентификация всегда будет завершаться неудачей и пользователь не сможет подключиться к серверу.