我正试图从R连接到docker中运行的postgres db。我从R获得密码验证失败,但不是从命令行。
启动容器:
docker run -d -p 5432:5432 --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
从集装箱内部进入工作:
docker exec -it my-postgres bash
psql -U postgres
从主机访问从cl:工作
psql -h localhost -p 5432 -U postgres -W
但由于某种原因,从R连接会导致身份验证失败:
library(DBI)
db <- dbConnect(RPostgres::Postgres(),
dbname = 'postgres',
host = 'localhost',
port = 5432,
user = 'postgres',
password = 'mysecretpassword')
错误消息:
Error: FATAL: password authentication failed for user "postgres"
版本:
- RPostgres 1.4.3
- DBI 1.1.2
- R 4.1.1
- postgres:最新-14.1
R试图连接到错误的postgres实例,在将端口绑定更改为其他内容(5432:5432->8543:5432(后,我连接到了R。
我不知道这是怎么发生的。这是我唯一一个正在运行的docker容器,我的主机上没有postgres,当绑定到标准端口时,通过CL连接可以让我进入正确的实例。此外,我认为如果尝试使用正在使用的端口,我会从Docker那里得到端口冲突,但这也没有发生。