psql SQL STATE [08006] Ошибка аутентификации пароля для пользователя. Laravel - PullRequest
0 голосов
/ 04 октября 2019

Я впервые работаю с Laravel, и у меня настроен проект, но я не могу подключиться к базе данных, созданной в Postgres. Всякий раз, когда я пытаюсь подключиться к базе данных для запроса (или чего-либо еще), я получаю эту ошибку:

PDOException
SQLSTATE[08006] [7] FATAL: password authentication failed for user "marlie" FATAL: password authentication failed for user "marlie"

Я использую Windows 10, PostgreSQL 11, Laravel 6.0.4. Я могу подключиться к базе данных через pgAdmin4, командную строку и psycopg2 без каких-либо проблем с аутентификацией пароля. Только Laravel доставляет мне неприятности.

Я пытался создать новый проект Laravel, создать нового суперпользователя (который я протестировал, может успешно получить доступ к базе данных из других программ, упомянутых выше). Я также попытался поместить имя пользователя и пароль в одинарные и двойные кавычки. Я попытался изменить имя базы данных на значение номера OID в моем файле postgreSQL для базы данных. Я также попытался добавить абсолютный каталог файлов. Я попытался изменить порт с 5432 на 54320. Я также пробовал другие пароли.

В некоторых результатах поиска было предложено поиграть с файлом pg_hba.conf и добавить несколько строк, таких как (отступ здесь немногозабавно, но в реальном файле все выстроено):

local   all     marlie                  md5
local   all     marlie                  trust
host    all     all     ::1/0           trust
host    all     all     all         trust

Я также попытался изменить все на доверие, и в этом случае я могу войти в систему из командной строки без пароля, но Laravel все равно победилне дай мне! Кроме того, мой ноутбук с Windows, похоже, не поддерживает локальные соединения, поскольку они являются доменами Unix-сокетов, поэтому любые локальные записи в pg_hba.conf заканчиваются тем, что файл вообще не может быть загружен. В настоящее время мой файл pg_hba.conf возвращается к настройкам по умолчанию.

Я попытался войти через ssh в мой проект Laravel через Homestead.

$ vagrant ssh
$ psql -d natureFun -U marlie -W
Password:
psql: FATAL: Peer authentication failed for user "marlie"

Я подумал, что это было интересно, потому чтонигде в моем файле conf я не говорю использовать одноранговую аутентификацию. Я только когда-либо пробовал доверие и md5.

Это мой файл .env от Laravel

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=natureFun
DB_USERNAME=marlie
DB_PASSWORD=secret

Это файл pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             127.0.0.1/32            md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

РЕШИТЬ! Я неправильно понял, как работает Homestead (и также не упомянул, что я использую его, извините!), Когда я помещаю localhost или 127.0.0.1 в мой файл .env в моем проекте Laravel, он ссылается на Homestead Virtual как локальный, а не на мой фактическийкомпьютер. Изменение DB_HOST на IP-адрес моего компьютера решило проблему, и теперь я счастлив подключен.

0 голосов
/ 04 октября 2019

Похоже, что ваш первый pg_hba.conf имеет опечатку:

host    all     all     all         trust

Должно быть:

host    all     all     <ip_address>/<netmask>         trust

Если это компьютер разработчика, и вы не заботитесь о безопасности (на данный момент), просто попробуйте:

host    all     all     0.0.0.0/0         trust

Кроме того, если вы не используете IPv6, я бы рекомендовал избавиться от всей строки, содержащей ::1/0

Ваш второй pg_hba.conf то, что вы вставили, должно работать, учитывая, что вы перезапустили / перезагрузили процесс postmaster - вы обычно можете сделать это через pg_ctl reload из терминала или SELECT pg_reload_conf() из psql

Раскрытие информации: я EnterpriseDB (EDB) сотрудник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...