На данный момент поддерживаются только пароль для аутентификации в открытом виде и пароль MD5 для аутентификации. получил 10
Я использую npgsql для postgresql13, но при попытке подключения получаю следующую ошибку:
На данный момент поддерживаются только пароль для аутентификации в открытом виде и пароль MD5 для аутентификации. получил 10
Моя строка подключения: NpgsqlConnection conn = new NpgsqlConnection ("Сервер = xxxx; Порт = xxxx; Идентификатор пользователя = xxxx; Пароль = xxx; База данных = база данных;")
Все работало нормально в postgresql 9.6, но он был перенесен на версию 13, и это создало эту проблему
5 ответов
Вам необходимо обновить Npgsql 4.0 или выше, который поддерживает метод аутентификации scram-sha-256, доступный начиная с PostgreSQL v10.
У меня была такая же ошибка с установленным Npgsql 4.5 и postgresql-15. Строка password_encryption уже была прокомментирована в файле postgresql.conf.
Что решило проблему для меня, так это изменить pg_hba.conf и изменить метод с «scram-sha-256» на «пароль» для всех записей в файле, например
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all password
# IPv4 local connections:
host all all 127.0.0.1/32 password
# IPv6 local connections:
host all all ::1/128 password
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all password
host replication all 127.0.0.1/32 password
host replication all ::1/128 password
Спасибо за помощь, библиотеки нужно обновить.
В случае невозможности изменения, как в моем случае, необходимо сделать следующее:
В файле postgresql.conf закомментируйте строку #password_encryption, возможно, вам потребуется повторно сгенерировать пароль.
Сервер базы данных мог быть обновлен, но клиентская библиотека, которую C# использует для подключения к серверу, не обновлена. Старый клиент не понимает новый метод аутентификации. Попробуйте обновить библиотеку npgsql.
Возможно, вы указали неправильный порт в строке подключения. У меня была такая же проблема, и она разрешилась после того, как я изменил номер порта в строке conn