Mac M1官方安装PostgreSQL16遇/tmp/.s.PGSQL.5432连接失败求非brew方案
非Homebrew环境下PostgreSQL 16连接错误的解决方案
1. 确认PostgreSQL服务状态并重启
- 检查服务是否运行:
无输出或状态值非0,说明服务未启动。sudo launchctl list | grep postgresql - 启动服务(官网16版本默认plist路径):
sudo launchctl load /Library/LaunchDaemons/com.edb.launchd.postgresql-16.plist - 如需重启,先停止再加载:
找不到plist文件的话,去sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-16.plist sudo launchctl load /Library/LaunchDaemons/com.edb.launchd.postgresql-16.plist/Library/LaunchDaemons目录下找带postgresql-16的文件即可。
2. 调整socket路径配置
- 打开PostgreSQL配置文件,默认路径:
open /Library/PostgreSQL/16/data/postgresql.conf - 找到
unix_socket_directories参数,确保包含/tmp,修改后如下:unix_socket_directories = '/tmp,/Library/PostgreSQL/16/data' - 保存后重启服务。
3. 临时指定socket路径连接
- 不想改配置的话,直接在psql命令里指定socket目录:
把psql -h /Library/PostgreSQL/16/data -U postgrespostgres换成你的实际用户名即可。
4. 修复数据目录权限
- 检查数据目录权限:
ls -ld /Library/PostgreSQL/16/data - 权限不对的话,修改为postgres用户所有:
sudo chown -R postgres:postgres /Library/PostgreSQL/16/data sudo chmod 700 /Library/PostgreSQL/16/data - 重启服务后再尝试连接。
5. 重新初始化数据库(谨慎!会丢失现有数据)
- 前面方法都没用的话,试试重新初始化:
- 停止服务:
sudo launchctl unload /Library/LaunchDaemons/com.edb.launchd.postgresql-16.plist - 备份现有数据(必须做!):
sudo cp -r /Library/PostgreSQL/16/data /Library/PostgreSQL/16/data_backup - 初始化新数据目录:
sudo -u postgres /Library/PostgreSQL/16/bin/initdb -D /Library/PostgreSQL/16/data - 重新加载服务:
sudo launchctl load /Library/LaunchDaemons/com.edb.launchd.postgresql-16.plist
- 停止服务:
内容的提问来源于stack exchange,提问作者Bosco Tsin
相关产品推荐
相关产品推荐

