Какой тип аутентификации pdo использует в postgres?

Я пытаюсь подключиться к своей базе данных с помощью этого кода:

Db::$dbh = new PDO("pgsql:dbname=$db;host=$host;port=$port", $user, $pass, $opt);

и это не удается:

FATAL: Ident authentication failed for user "postgres"

Когда я использую те же учетные данные в командной строке, все работает нормально:

psql -h127.0.0.1 -Upostgres --password -ddatabase1 -p5432
Password for user postgres: 
psql (10.5)
Type "help" for help.

database1=# 

Почему PDO использует идентификацию аутентификации, хотя я явно использую имя пользователя и пароль?

Обновлять Я обнаружил, что командная строка также не работает при использовании localhost в качестве имени хоста. Судя по всему, 127.0.0.1 и localhost не взаимозаменяемы.

0
0
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При использовании localhost в качестве хоста PDO (или Postgres?) Может использовать IPv6 для подключения. В моем pg_hba.conf эта строка была такой:

host    all             all             ::1/128                 ident

Вот почему был использован ident.

Другие вопросы по теме