You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R连接Ubuntu系统中安装的PostgreSQL数据库失败该如何解决

问题根源

Ubuntu系统默认安装的PostgreSQL采用peer认证作为本地Unix套接字的认证规则,即仅允许操作系统用户名与PostgreSQL用户名一致的用户免密登录。你在R连接代码中指定了host='localhost',会强制走TCP/IP连接,此时触发密码认证规则,而postgres用户未设置密码,因此连接失败。

解决方案

推荐两种可行的处理方式,按需选择即可:

方案1:修改R连接参数,走Unix套接字认证

如果你的R程序是在postgres用户下运行,直接删除连接参数中的host字段即可,无需设置密码,修改后代码如下:

connection <- dbConnect(driver, dbname='testchr22', port=5432, user= 'postgres', password='')

如果是普通用户运行R程序,该方案不适用,请选择方案2。

方案2:设置postgres用户密码,启用TCP密码认证

步骤1:登录PostgreSQL命令行

依次执行以下命令进入psql交互界面:

sudo -i -u postgres
psql

步骤2:给postgres用户设置密码

在psql中执行以下SQL语句,将自定义密码替换为你要设置的密码:

ALTER USER postgres PASSWORD '自定义密码';

执行完成后输入\q退出psql。

步骤3:(可选)调整认证配置并重启服务

如果设置密码后依然连接失败,需修改PostgreSQL的客户端认证配置:

  1. 打开配置文件(以PostgreSQL 14版本为例,版本号替换为你实际安装的版本):
sudo nano /etc/postgresql/14/main/pg_hba.conf
  1. 找到如下配置行:
host    all             all             127.0.0.1/32            peer

将末尾的peer修改为md5,保存退出。
3. 重启PostgreSQL服务使配置生效:

sudo systemctl restart postgresql

步骤4:修改R连接参数

将连接代码中的password字段填为你刚才设置的密码即可:

connection <- dbConnect(driver, dbname='testchr22', host='localhost', port=5432, user= 'postgres', password='自定义密码')
验证方法

修改完成后可先在终端执行以下命令验证TCP连接是否正常,提示输入密码时输入设置的密码,能正常登录即可正常运行R代码:

psql -h localhost -U postgres -d testchr22

内容的提问来源于stack exchange,提问作者zhouhufeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:36:04