Настройка 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