На данный момент поддерживаются только пароль для аутентификации в открытом виде и пароль 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

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