You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7虚拟机PostgreSQL执行psql -l报错:postgres数据库不存在求排查

PostgreSQL执行psql -l报错「database « postgres » does not exist」的排查思路

1. 确认连接的实例是不是预期的那个

  • 先查客户端和服务器版本:psql -V看客户端版本,postgres -V看服务器版本,确保两者匹配,别跨版本连错实例
  • 检查PGDATA环境变量:执行echo $PGDATA,看指向的是不是你配置里的/var/lib/pgsql/11/data,要是指向别的目录,大概率连错实例了
  • 看服务状态:systemctl status postgresql-11,确认跑的是11版本的PostgreSQL

2. 先连模板库确认实例状态

PostgreSQL默认一定会有template1这个系统库,先试试连它:

psql -d template1

连进去后执行\l,直接看当前实例下所有数据库,确认是不是真的没有postgres库

3. 检查实例有没有完成初始化

  • 要是刚装的PostgreSQL,可能没跑初始化命令,CentOS7上11版本的初始化命令是:
/usr/pgsql-11/bin/postgresql-11-setup initdb
  • 去数据目录/var/lib/pgsql/11/data里看看,有没有base、global这些目录,要是缺了,说明实例没初始化好

4. 真缺postgres库就手动建一个

如果确认实例正常,就是没postgres库,连进template1后执行创建命令:

CREATE DATABASE postgres;

建完退出,再跑psql -l试试

5. 检查是不是环境变量改了默认连接库

  • 看看有没有设PGDATABASE变量:echo $PGDATABASE,要是输出不是空也不是postgres,说明默认连接被改了,执行unset PGDATABASE再试
  • 也可以直接指定库跑列表命令:psql -d template1 -l

6. 验证pg_hba.conf的有效性

你给的配置看起来没问题,但还是要确认:

  • 查实例实际加载的配置文件:连进template1后执行show hba_file;,看路径和你提供的是不是一致
  • 要是之前改过配置,记得重载服务:systemctl reload postgresql-11,不然配置没生效

内容的提问来源于stack exchange,提问作者Youssef CH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:27:16