繁体   English   中英

从 R 连接到 Postgres 导致身份验证失败

[英]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"

版本:

  • RPostgres 1.4.3
  • DBI 1.1.2
  • R 4.1.1
  • postgres:最新 - 14.1

我相当肯定这与 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM