macOS Monterey下pgAdmin 4无法检测PostgreSQL的解决求助
以下是几个可行的排查和解决步骤:
确认PostgreSQL服务状态
在终端执行brew services list,查看postgres的状态是否为started。如果是stopped,执行brew services start postgresql启动服务。
也可以用ps aux | grep postgres检查是否有postgres进程在运行,能看到多个postgres相关进程才说明服务正常。手动添加数据库连接(而非依赖自动检测)
pgAdmin 4的自动检测经常出问题,直接手动创建连接:- 打开pgAdmin 4,右键点击左侧的「Servers」→「Register」→「Server」
- 在「General」标签随便填个名称(比如Local PostgreSQL)
- 切换到「Connection」标签:
- Host name/address填
localhost - Port填默认的
5432 - Maintenance database填
postgres - Username填
postgres - 如果之前设置过密码就填,没设置过可以留空,之后再配置
- Host name/address填
- 点击「Save」,如果连接失败看错误提示针对性解决。
DBeaver同理,新建连接时选择PostgreSQL,手动填写上述参数,测试连接。
检查PostgreSQL配置文件
brew安装的PostgreSQL配置文件默认路径:- Intel芯片:
/usr/local/var/postgres/postgresql.conf - M系列芯片:
/opt/homebrew/var/postgres/postgresql.conf
打开文件,确保listen_addresses = '*'(默认可能是localhost,改成*允许所有本地连接),然后重启服务brew services restart postgresql。
同时检查
pg_hba.conf文件(同目录下),确保有一行host all all 127.0.0.1/32 scram-sha-256(或者md5,取决于版本),允许本地IP连接。- Intel芯片:
验证PostgreSQL可执行路径
在终端执行which postgres,如果返回空或者错误路径,说明环境变量没配置对。brew安装的postgres bin目录:- Intel:
/usr/local/bin - M系列:
/opt/homebrew/bin
把这个路径添加到PATH里,比如执行echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc(如果用zsh),然后重启终端,再执行postgres --version确认能正常输出版本号。
- Intel:
重置PostgreSQL用户密码
如果连接时提示密码错误,重置postgres用户密码:- 先停止服务:
brew services stop postgresql - 以无密码验证模式启动:
postgres -D /opt/homebrew/var/postgres -c "authentication_timeout=10" -c "listen_addresses='localhost'" -c "password_encryption=scram-sha-256" &(路径根据芯片调整) - 打开新终端执行
psql -U postgres,进入命令行后执行:ALTER USER postgres WITH PASSWORD 'your-new-password'; \q - 杀掉临时postgres进程,再启动正常服务:
brew services start postgresql
- 先停止服务:
检查pgAdmin 4的权限
如果是从官网下载的pgAdmin 4而非brew安装,可能存在权限问题。右键点击pgAdmin 4.app,选择「显示包内容」,检查Contents/MacOS下的pgAdmin文件权限,或者尝试用sudo open /Applications/pgAdmin\ 4.app启动,看是否能正常连接。
内容的提问来源于stack exchange,提问作者Rina

