[英]Connecting to Postgres from R causes authentication failure
我正在尝试从 R 连接到在 docker 中运行的 postgres 数据库。 我从 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"
版本:
我相当肯定这与 Docker 无关; 它是 PostgreSQL 设计决策的组合,以及psql
和 API 的差异,R 包链接访问数据库。 我记得, psql
在本地机器上使用了一个套接字。 R 软件包是 API 的用户并依赖于网络访问。
作为 PostgreSQL 的长期用户,我记得还必须在pg_hba.conf
中设置一些内容,并且可能需要identd
才能运行。 现在可能只是网络访问就足够了。 我在/etc/postgresql/13/main/postgresql.conf
中有这个(就像我在 Ubuntu 上一样)
listen_addresses = '*'
作为默认值localhost
的更改。 我还将它作为/etc/postgresql/13/main/pg_hba.conf
中的最后一行,以允许从我的家庭网络上的每台机器进行访问:
host all all 192.168.1.0/24 ident
有一些关于这个“外面”的教程,但我没有一个很好的链接。 我同意这很麻烦——但值得因为 PostgreSQL 很好——而且我从 PostgreSQL 6.* 左右开始在我的 Linux 机器上使用上述方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.