psql仅特定普通用户无法正常使用 相关配置问题排查咨询
psql单普通用户连接失败问题排查方案
- Unix域套接字文件权限错误
PostgreSQL启动后生成的/tmp/.s.PGSQL.5432套接字文件如果权限配置不当,会导致普通用户无读写权限,而root和postgres用户因权限更高不受影响。
排查执行命令:ls -l /tmp/.s.PGSQL.5432
正常权限应为srwxrwxrwx,归属postgres用户/用户组。若权限异常可执行chmod 777 /tmp/.s.PGSQL.5432临时修复,同时检查PostgreSQL启动脚本的umask配置,避免服务重启后权限重置。 - 套接字路径配置不匹配
检查postgresql.conf配置文件中的unix_socket_directories参数,若实际监听路径非/tmp(例如修改为/var/run/postgresql),而simple_user的环境变量PGHOST被错误设置为/tmp,就会出现找不到套接字的报错。
排查方法:先查看postgresql.conf中unix_socket_directories的实际配置值,再切换到simple_user执行echo $PGHOST,若两者不匹配,可在simple_user的家目录下的.bashrc或.bash_profile中添加export PGHOST=<实际套接字存放路径>,重载配置后即可正常连接。 - /tmp目录权限异常
若/tmp目录的sticky位被移除,或权限被修改为普通用户无法访问目录内文件,也会触发该报错。
排查执行命令:ls -ld /tmp
正常权限应为drwxrwxrwt,若异常可执行chmod 1777 /tmp修复。
内容的提问来源于stack exchange,提问作者Tiino
相关产品推荐
相关产品推荐

