如何在Ubuntu系统安装Postgres、创建超级用户及解决createdb连接报错
错误根因说明
该报错是PostgreSQL客户端无法通过默认Unix域套接字路径找到运行中的服务端,通常由服务未实际启动、套接字路径配置不匹配、端口配置错误、运行目录权限异常四类原因导致,可按以下步骤逐一排查解决。
排查解决步骤
- 第一步:验证PostgreSQL服务实际运行状态
执行命令查看服务状态:
若输出显示服务为inactive或failed状态,说明启动命令返回成功为误报,可查看sudo systemctl status postgresql/var/log/postgresql/目录下的对应日志文件定位启动失败原因,常见原因包括5432端口被其他进程占用、/etc/postgresql/<对应版本号>/main/postgresql.conf配置文件存在语法错误。 - 第二步:核对Unix域套接字路径配置
若确认服务正常运行,打开postgresql.conf配置文件,找到unix_socket_directories配置项,确认参数值包含/var/run/postgresql,若缺失则添加后重启服务生效:sudo systemctl restart postgresql - 第三步:核对端口配置
检查postgresql.conf中的port参数,若未使用默认5432端口,执行createdb命令时需指定对应端口:sudo -u postgres createdb -p <自定义端口号> $USER - 第四步:修复运行目录权限
若套接字路径和端口配置均无问题,检查/var/run/postgresql目录权限,执行以下命令修复权限后重启服务:sudo chown postgres:postgres /var/run/postgresql && sudo chmod 775 /var/run/postgresql sudo systemctl restart postgresql - 第五步:解决多版本集群冲突
若设备上安装了多个版本的PostgreSQL,可执行命令查看所有集群状态:
找到对应版本的集群,执行指定版本启动命令即可:pg_lsclusterssudo pg_ctlcluster <版本号> main start - 临时绕过方案
无需修改配置的临时解决方法:执行createdb时指定配置中设置的套接字路径即可,比如配置中套接字路径为/tmp时,命令如下:sudo -u postgres createdb -h /tmp $USER
内容的提问来源于stack exchange,提问作者Kevson
相关产品推荐
相关产品推荐

