Настройка Postgres для tcp md5 в среде докера

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

У нас есть несколько Docker-контейнеров, один из которых - контейнер Postgres 9, который мы настраиваем с помощью скрипта init_db.sh. Конечная конфигурация работающего контейнера:

listen_addresses = '*'
local all all md5
host all all all md5

Запуск: lsof -i tcp:5432 (я сейчас работаю на моем Mac), произвел это:

COMMAND     PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke 17454 sigals   36u  IPv4 0x13ec351b99f025cd      0t0  TCP *:postgresql (LISTEN)
com.docke 17454 sigals   37u  IPv6 0x13ec351b8ce8a025      0t0  TCP localhost:postgresql (LISTEN)

Когда я запускаю контейнер, работающий с зашифрованным паролем, я получаю: ERROR org.apache.tomcat.jdbc.pool.ConnectionPool:182 - Невозможно создать начальные соединения пула.

2017-02-08T14:07:43.438478547Z org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser"

Когда я ставлю пароль как открытый текст, он работает.

Когда я настроил IP только для localhost, сработали как зашифрованные, так и незашифрованные пароли.

Что я неправильно настроил?

1 ответ

Согласно документам:

md5 Требовать от клиента предоставления пароля с двойным хэшированием MD5 для аутентификации. Подробнее см. В разделе 20.3.2.

пароль Требуется, чтобы клиент предоставил незашифрованный пароль для аутентификации. Поскольку пароль передается в виде открытого текста по сети, его нельзя использовать в ненадежных сетях. Подробнее см. В разделе 20.3.2.

Соединение jdbc будет хэшировать пароль, который вы вводите в самой строке соединения - вам не нужно md5 самостоятельно.

Также смотрите здесь: /questions/6120144/parol-dlya-heshirovannoj-bazyi-dannyih-hibernate/6120150#6120150

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