我正在尝试使用docker postgres映像进行简单设置,发布了一个端口供我从localhost连接。
docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password -e POSTGRES_USER=postgres -d postgres
如果我指定docker外部IP,我就可以正常连接:
psql -h 192.1469.99.100 -p 5432 -U postgres -d postgres --password
但是在尝试使用localhost时,密码验证失败:
psql -h localhost -p 5432 -U postgres -d postgres --password
psql: FATAL: password authentication failed for user "postgres"
我需要手动设置一些手动端口转发吗?奇怪的是,它似乎可以正确连接到postgres服务器,只是奇怪地告诉我密码失败。也许我在docker配置上做错了什么?
pg_hba.conf
如下:
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
主机是Windows 7。
答案 0 :(得分:1)
您是否尝试了5432以外的其他端口?尝试一些免费的端口,以便您本地的postgre和docker postgre之间没有冲突。对我来说,您的本地Postgre在localhost:5432上具有更高的prio,占用了流量,因此您尝试登录到本地postgre,而不是docker postgre,但已登录。只是一个猜测。
您是否检查了虚拟机中是否允许此端口或用于虚拟化的端口?
答案 1 :(得分:0)
容器具有自己的网络,其环回地址不引用主机,反之亦然。