FATAL: не удалось выполнить аутентификацию по паролю для пользователя с аутентификацией Postgres13.3 и SCRAM.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 FATAL: не удалось выполнить аутентификацию по паролю для пользователя с аутентификацией Postgres13.3 и SCRAM.

Сообщение Anonymous »

Я настроил docker-контейнер postgres:13.3 и аутентификацию scram-sha-256.
Первоначально я запустил:

Код: Выделить всё

docker run -d --name my-postgres13 -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=fbp123 -e POSTGRES_DB=mydb -e POSTGRES_HOST_AUTH_METHOD=scram-sha-256 -v pgdata13:/var/lib/postgresql/data postgres:13.3
Postgres.conf:

Код: Выделить всё

password_encryption = scram-sha-256
pg_hba.conf:

Код: Выделить всё

hostnossl all all 0.0.0.0/0 scram-sha-256
local all all scram-sha-256
После того, как все вышеперечисленное было выполнено и перезапущено контейнер, я создал нового пользователя fbp2 и применил пароль «fbp123», и пароль, похоже, сохранен как
scram в таблице pg_authid:

Код: Выделить всё

 16386 | fbp2                      | t        | t          | f             | f           | t           | f              | f            |           -1 | SCRAM-SHA-256$4096:yw+jyaEzlvlOjZnc/L/flA==$tqPlJIDXv9zueaGd8KpQf11N82IGgAOsK4
Lhb7lPhi4=:+mCXFKb2y5PG6ycIKCz7xaY8U5MNLnkzlPZK8pt3to0= |
Для подключения я использую исходный текст из своего Java-приложения:

Код: Выделить всё

hikariConfig = new HikariConfig();
hikariConfig.setUsername("fbp2");
hikariConfig.setPassword("fbp123");
hikariConfig.setJdbcUrl("jdbc:postgresql://%s:%s/%s".formatted("localhost", 5432, "mydb"));
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource.getConnection();
Из журналов используется этот URL-адрес: jdbc:postgresql://localhost:5432/mydb
Проблема в том, что я У меня проблема с аутентификацией, хотя я использую текстовый пароль, который использовал на сервере Postgres:

Код: Выделить всё

2024-03-30 14:38:03.372 DEBUG 22440 [           main] c.z.h.u.DriverDataSource                 : Loaded driver with class name org.postgresql.Driver for jdbcUrl=jdbc:postgresql://localhost:5432/mydb
2024-03-30 14:38:03.601 DEBUG 22440 [           main] c.z.h.p.PoolBase                         : HikariPool-1 - Failed to create/setup connection: FATAL: password authentication failed for user "fbp2"
2024-03-30 14:38:03.601 DEBUG 22440 [           main] c.z.h.p.HikariPool                       : HikariPool-1 - Cannot acquire connection from data source
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "fbp2"
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:693)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:203)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:258)
Обратите внимание: если я вернусь к «доверительному» режиму и не буду отправлять пароли, у меня будет следующее:

Код: Выделить всё

org.postgresql.util.PSQLException: The server requested SCRAM-based authentication, but no password was provided.
Итак, похоже, что сервер хочет только аварийного отключения. Я пробовал md5, но безуспешно.

Некоторые соответствующие зависимости:

Код: Выделить всё

 
org.postgresql
postgresql
42.3.0



com.zaxxer
HikariCP
5.1.0

Мой рабочий стол Docker работает под управлением Windows 11.
Я использую Oracle OpenJDK 20.0.1
Я могу подключиться к mydb с помощью пользователя fbp2 с помощью без проблем через инструмент администратора psql (после простого пароля):

Код: Выделить всё

root@a00ccf79f08a:/# psql -h localhost -p 5432 -U fbp2 -d mydb
Password for user fbp2:
psql (13.3 (Debian 13.3-1.pgdg100+1))
Type "help" for help.

mydb=#
ОБНОВЛЕНИЕ 1
Журналы сервера (включая попытку подключения):

Код: Выделить всё

2024-03-30 15:21:19.566 UTC [1] LOG:  starting PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
2024-03-30 15:21:19.567 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-03-30 15:21:19.567 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2024-03-30 15:21:19.571 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-03-30 15:21:19.576 UTC [27] LOG:  database system was shut down at 2024-03-30 15:21:18 UTC
2024-03-30 15:21:19.582 UTC [1] LOG:  database system is ready to accept connections
ОБНОВЛЕНИЕ 2
Результат
"mydb=# выберите имя, настройку, источник, исходный файл из pg_settings где name = 'password_encryption';"

Код: Выделить всё

mydb=# select name, setting, source, sourcefile from pg_settings where name = 'password_encryption';
name         | setting | source  | sourcefile
---------------------+---------+---------+------------
password_encryption | md5     | default |
(1 row)
ОБНОВЛЕНИЕ 3
/var/lib/postgresql/data/postgresql.conf:

Код: Выделить всё

#password_encryption = scram-sha-256        # md5 or scram-sha-256
Я вижу только один файл postgresql.conf. Чтобы перезагрузить изменение, я сделал:

Код: Выделить всё

mydb=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)

mydb=#
а также контейнер перезапуска Docker.

Подробнее здесь: https://stackoverflow.com/questions/782 ... cram-authe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»