Первоначально я запустил:
Код: Выделить всё
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
Код: Выделить всё
password_encryption = scram-sha-256
Код: Выделить всё
hostnossl all all 0.0.0.0/0 scram-sha-256
local all all scram-sha-256
scram в таблице pg_authid:
Код: Выделить всё
16386 | fbp2 | t | t | f | f | t | f | f | -1 | SCRAM-SHA-256$4096:yw+jyaEzlvlOjZnc/L/flA==$tqPlJIDXv9zueaGd8KpQf11N82IGgAOsK4
Lhb7lPhi4=:+mCXFKb2y5PG6ycIKCz7xaY8U5MNLnkzlPZK8pt3to0= |
Код: Выделить всё
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();
Проблема в том, что я У меня проблема с аутентификацией, хотя я использую текстовый пароль, который использовал на сервере 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.
Некоторые соответствующие зависимости:
Код: Выделить всё
org.postgresql
postgresql
42.3.0
com.zaxxer
HikariCP
5.1.0
Я использую 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=#
Журналы сервера (включая попытку подключения):
Код: Выделить всё
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
Результат
"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)
/var/lib/postgresql/data/postgresql.conf:
Код: Выделить всё
#password_encryption = scram-sha-256 # md5 or scram-sha-256
Код: Выделить всё
mydb=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
mydb=#
Подробнее здесь: https://stackoverflow.com/questions/782 ... cram-authe