M1芯片Mac系统下R Studio连接PostgreSQL报错及账号查询问题
M1 macOS下R Studio连接PostgreSQL问题解决
一、SCRAM认证错误修复
报错信息:
Error in postgresqlNewConnection(drv, ...) : RPosgreSQL error:
could not connect postgres@localhost:5432 on dbname "postgres": SCRAM
authentication requires libpq version 10 or above
原因是RPostgreSQL依赖的libpq版本过低,不支持PostgreSQL 10+默认的SCRAM认证机制,两种解决方式如下:
方式1:改用RPostgres包(推荐)
RPostgres是更现代的PostgreSQL R客户端,原生支持SCRAM认证,无需处理libpq版本问题:
# 安装包 install.packages("RPostgres") # 建立连接 library(RPostgres) con <- dbConnect(RPostgres::Postgres(), dbname = "postgres", host = "localhost", port = 5432, user = "你的数据库用户名", password = "你的数据库密码")
方式2:重新编译RPostgreSQL适配新版libpq
如果坚持使用RPostgreSQL,需要让它链接到支持SCRAM的libpq(通过Homebrew安装的PostgreSQL自带新版libpq):
- 终端安装最新PostgreSQL:
brew install postgresql - 在R中指定pg_config路径并重新安装
RPostgreSQL:Sys.setenv(PG_CONFIG = "/opt/homebrew/bin/pg_config") install.packages("RPostgreSQL", type = "source")
重新安装后即可正常使用原连接代码。
二、查找/重置PostgreSQL账号密码
默认用户名
PostgreSQL在M1 macOS下的默认超级用户通常是以下两种:
- 官方默认用户:
postgres - Homebrew安装的用户:你的macOS系统登录用户名(比如你电脑登录名是
jordan,用户名就是jordan)
重置/设置密码
如果忘记密码或未设置,按以下步骤操作(Homebrew安装的情况):
- 停止PostgreSQL服务:
brew services stop postgresql - 启动无认证模式(临时跳过密码验证):
postgres -D /opt/homebrew/var/postgres -c "authentication_method=trust" - 新开一个终端,连接数据库:
psql -U postgres # 或者用你的系统用户名,比如psql -U jordan - 设置用户密码(替换
新密码为你要设置的密码):ALTER USER postgres WITH PASSWORD '新密码'; - 退出psql:输入
\q回车,然后关闭无认证的服务终端,重新启动正常服务:brew services start postgresql
查看所有数据库用户
连接到psql后,输入\du即可列出所有数据库用户及其权限。
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

