使用pgAdmin4连接PostgreSQL失败:readonly attribute错误
我之前帮同事排查问题时遇到过完全一致的情况——pgAdmin3能正常连接,但pgAdmin4不管搭配PostgreSQL 9.6还是10版本,都报"readonly attribute"错误,而且还是全新安装的环境。结合经验判断,这基本是pgAdmin4自身的配置或权限问题,和数据库本身无关,你可以试试下面几个针对性的解决办法:
检查pgAdmin4配置目录的读写权限
pgAdmin4依赖本地的配置数据库(pgadmin4.db)存储连接信息等内容,如果这个文件或所在目录没有读写权限,就会触发readonly相关报错:- Linux/macOS下,配置目录一般在
~/.pgadmin,执行以下命令赋予当前用户读写权限:chmod -R u+rw ~/.pgadmin - Windows下,配置目录通常是
%APPDATA%\pgAdmin,右键该目录选择「属性」→「安全」,给当前登录用户添加「完全控制」权限。
- Linux/macOS下,配置目录一般在
重置pgAdmin4的配置数据库
有时候配置数据库损坏会引发奇怪的权限问题。先关闭pgAdmin4,找到配置目录里的pgadmin4.db文件,先备份一份以防万一,然后删除原文件。重新启动pgAdmin4后,它会自动重建一个干净的配置数据库,之后再尝试连接postgres用户。尝试以管理员身份启动pgAdmin4
这招在Windows系统上经常奏效——右键pgAdmin4的快捷方式,选择「以管理员身份运行」,再去创建数据库连接。有时候系统的UAC限制会导致pgAdmin4无法写入配置文件,管理员权限能绕过这个限制。升级到最新版pgAdmin4
如果你的pgAdmin4版本偏旧,可能存在已知的bug。下载最新的稳定版安装包覆盖安装后再测试连接,很多这类奇怪的小问题在新版本里都会被修复。兜底排查:确认pg_hba.conf的本地连接配置
虽然pgAdmin3能正常连接,但还是可以快速检查一下PostgreSQL的pg_hba.conf文件,确保postgres用户的本地连接是允许的。比如可以将对应条目改成:local all postgres trust修改后记得重启PostgreSQL服务,不过这一步大概率不是问题根源,仅作为兜底排查项。
内容的提问来源于stack exchange,提问作者Ahmed Tawfik




