macOS更新后PostgreSQL连接报错:无法找到指定套接字文件
macOS更新后PostgreSQL连接失败:找不到/tmp/.s.PGSQL.5432套接字的解决办法
1. 检查并启动PostgreSQL服务
如果PostgreSQL服务未运行,会直接导致套接字不存在:
- 若用Homebrew安装,先查看服务状态:
看到postgresql状态为brew services liststopped时,启动服务:brew services start postgresql - 非Homebrew安装的情况,检查服务状态:
未运行则执行启动命令:pg_ctl -D /usr/local/var/postgres statuspg_ctl -D /usr/local/var/postgres start
2. 修复套接字路径不匹配问题
macOS更新后,PostgreSQL可能将套接字生成到/private/tmp/而非/tmp/,可通过软链接解决:
- 先定位实际套接文件位置:
find / -name ".s.PGSQL.5432" 2>/dev/null - 若输出为
/private/tmp/.s.PGSQL.5432,创建软链接到/tmp/目录:ln -s /private/tmp/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
3. 修改配置文件固定套接字路径
为避免后续系统更新再次出现问题,直接修改PostgreSQL配置固定套接字目录:
- 打开配置文件(以下为Homebrew默认路径,其他安装方式路径可能不同):
open /usr/local/var/postgres/postgresql.conf - 找到
unix_socket_directories参数,修改为:unix_socket_directories = '/tmp' - 重启PostgreSQL服务使配置生效:
brew services restart postgresql # 非Homebrew安装用此命令 pg_ctl -D /usr/local/var/postgres restart
4. 检查/tmp目录权限
若以上步骤无效,可能是/tmp目录权限异常:
- 查看当前权限:
ls -ld /tmp - 正常权限应为
drwxrwxrwt,若不符则修复:sudo chmod 1777 /tmp
内容的提问来源于stack exchange,提问作者Tejas Zambre
相关产品推荐
相关产品推荐

