在PostgreSQL环境中,psql命令如何查询并显示所有数据库列表?

Psql查看数据库列表

Psql简介

Psql是PostgreSQL数据库的交互式命令行客户端,支持SQL执行、事务管理及数据库对象操作,查看数据库列表是Psql的基础功能之一,用于确认当前连接环境中的所有数据库,是数据库管理和操作的前提步骤,通过Psql查看数据库列表,可快速了解数据库名称、所有者、状态等核心信息,为后续操作(如选择特定数据库、创建新数据库或删除数据库)提供依据。

在PostgreSQL环境中,psql命令如何查询并显示所有数据库列表?

连接Psql

在使用Psql查看数据库列表前,需先连接到PostgreSQL服务器,基本连接命令格式如下:

psql -U 用户名 -d 数据库名 -h 主机地址 -p 端口
  • -U 用户名:指定连接用户,默认为当前系统用户;
  • -d 数据库名:连接目标数据库(若未指定,默认连接当前用户的主数据库);
  • -h 主机地址:服务器IP或主机名(默认为本地);
  • -p 端口:PostgreSQL默认端口为5432(可省略)。

以用户postgres连接本地默认端口:

psql -U postgres

若未指定数据库,Psql会自动连接当前用户的主数据库(如postgres)。

查看数据库列表的方法

Psql提供了多种命令查看数据库列表,不同命令的输出内容、详细程度存在差异,以下是常用方法及说明:

1 基本命令:l

l是最常用的数据库列表命令,输出包含数据库名、所有者、编码、排序规则等基本信息。

l

输出示例:

                         List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 mydb     | admin    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
 template1| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
(4 rows)

字段说明:

  • Name:数据库名称;
  • Owner:数据库所有者;
  • Encoding:数据库编码(如UTF8);
  • Collate/Ctype:排序规则和类型;
  • Access privileges:访问权限(如=c/postgres表示当前用户对数据库的所有者有完全控制权限)。

2 详细命令:l+

l+是l的增强版,输出更详细的数据库信息,包括创建时间、大小、表空间等。

l+

输出示例:

                         List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | Encoding for default transaction | Date created | Size | Tablespace | Access privileges
-----------+----------+----------+-------------+-------------+-------------------------------+--------------+------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | UTF8                           | 2025-01-01   | 8192 | main       | 
 mydb     | admin    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | UTF8                           | 2025-05-15   | 20480| main       | 
 template0| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | UTF8                           | 2025-01-01   | 8192 | main       | =c/postgres
 template1| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | UTF8                           | 2025-01-01   | 8192 | main       | =c/postgres
(4 rows)

新增字段:

  • Date created:数据库创建时间;
  • Size:数据库大小(以字节为单位);
  • Tablespace:数据库存储的表空间(默认为main);
  • Encoding for default transaction:默认事务的编码(与Encoding一致)。

3 其他命令:list

在某些PostgreSQL版本中,list是l+的别名,功能完全相同,若l+不可用,可尝试list。

在PostgreSQL环境中,psql命令如何查询并显示所有数据库列表?

list

输出与l+一致,此处不再赘述。

4 高级用法:筛选与查询

4.1 筛选特定数据库

若需查看特定数据库(如仅显示用户admin拥有的数据库),可使用-U选项:

l -U admin

输出仅包含admin用户拥有的数据库(如mydb)。

4.2 查看模板数据库

PostgreSQL有template0和template1两个模板数据库,用于创建新数据库,若需单独查看模板数据库,可使用-t选项:

l -t template

输出仅包含模板数据库(如template0、template1)。

4.3 使用SQL查询

Psql支持执行SQL语句,可通过SELECT查询数据库信息,获取所有非模板数据库的列表:

SELECT datname FROM pg_database WHERE datistemplate = false;

输出:

 datname 
 mydb    
(1 row)

若需查看数据库大小(以易读格式),可结合pg_size_pretty()函数:

SELECT datname, pg_size_pretty(pg_database_size(datname)) AS size 
FROM pg_database 
WHERE datistemplate = false;

输出:

 datname | size 
----------+------
 mydb    | 20 MB
(1 row)
命令 适用场景
l 基本列表(数据库名、所有者、编码等) 快速查看数据库基本信息
l+ 详细列表(创建时间、大小、表空间等) 需了解数据库详细信息时
list 与l+功能相同 旧版本或别名使用
l -U 用户名 筛选指定用户拥有的数据库 权限管理或特定用户操作
l -t 模板名 筛选模板数据库 模板数据库维护
SQL查询 自定义数据库列表 需复杂筛选或统计时

常见问题与技巧

1 如何查看当前连接的数据库?

若需确认当前连接的数据库,可通过c 数据库名切换数据库,或使用conninfo命令查看连接信息:

conninfo

输出示例:

在PostgreSQL环境中,psql命令如何查询并显示所有数据库列表?

You are connected to database "mydb" as user "admin" via socket "/var/run/postgresql/.s.PGSQL.5432" at port "5432".

执行SQL语句SELECT current_database();也可获取当前数据库名:

SELECT current_database();

输出:

 current_database 
 mydb            
(1 row)

2 如何查看数据库的详细信息(如大小、创建时间)?

若需更详细的数据库信息(如大小、创建时间),推荐使用l+命令,其输出已包含核心字段,若需通过SQL查询,可使用以下语句:

SELECT datname, datcreated, pg_database_size(datname) AS size 
FROM pg_database 
WHERE datistemplate = false;

输出:

 datname | datcreated | size 
----------+------------+-------
 mydb    | 2025-05-15 | 20 MB
(1 row)

3 权限问题处理

若当前用户没有查看所有数据库的权限(如普通用户仅能查看自己拥有的数据库),l命令会仅输出该用户拥有的数据库,此时需使用超级用户(如postgres)连接:

psql -U postgres

超级用户拥有查看所有数据库的权限,可执行l获取完整列表。

FAQs

如何查看当前连接的数据库?

解答:

  • 使用conninfo命令查看连接信息;
  • 执行SQL语句SELECT current_database();获取当前数据库名。

如何查看数据库的详细信息(如大小、创建时间)?

解答:

  • 使用l+命令(输出包含创建时间、大小等字段);
  • 执行SQL查询SELECT datname, datcreated, pg_database_size(datname) AS size FROM pg_database WHERE datistemplate = false;获取自定义信息。

通过以上方法,可高效使用Psql查看数据库列表,并掌握相关操作技巧,为PostgreSQL数据库管理提供基础支持。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/201409.html

赞 (0)
上一篇 2025年12月29日 04:49
下一篇 2025年12月29日 04:55

相关推荐

  • ping内网服务器掉包

    在构建和维护现代IT基础设施的过程中,内网服务器的稳定性是企业业务连续性的基石,在日常运维中,管理员经常会遇到“ping内网服务器掉包”这一棘手问题,这种现象不仅会导致文件传输中断、数据库查询超时,还会严重影响依赖低延迟通信的实时业务,要深入解决这一问题,不能仅停留在简单的网络连通性测试层面,而需要从物理层、链……

    2026年2月4日
    02370
  • 42U服务器机柜套什么清单定额?套定额时如何选子目

    42u服务器机柜的清单定额核心是:机柜本体、PDU电源分配单元、理线架、配线架、网线跳线、标签耗材,以及根据需求选配的KVM、风扇或盲板,预算大头通常花在机柜结构和电力分配上,42u服务器机柜的定额清单到底怎么列很多朋友第一次碰机房改造,看到42u机柜就懵了,网上报价差距极大,从两千到两万都有,原因就是清单里包……

    2026年8月30日
    01211
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • php如何自动上传文件到ftp服务器,php实现ftp自动上传文件的方法

    PHP实现文件自动上传至FTP服务器,是提升企业数据流转效率、保障数据安全备份的关键技术手段,核心结论在于:构建一个健壮的PHP自动上传系统,必须摒弃简单的单一函数调用,转而采用“异常处理机制+断点续传策略+安全连接模式”的组合方案, 这一方案不仅能解决网络波动导致的传输失败问题,还能在保证数据完整性的同时,通……

    2026年3月10日
    02271
  • 服务器IP地址连接失败是什么原因,连接不上怎么排查解决

    服务器ip连接失败,绝大多数情况下是网络链路、端口监听、防火墙策略或服务自身状态这四类问题,按“从外到内”的顺序逐层排查就能快速定位,服务器ip连接失败是什么原因?先分清故障模型碰到“服务器ip怎么连接失败”这类问题,千万别一上来就重启服务器,先把现象归类,才能少走弯路,行业共识认为,连接问题基本逃不出下面这张……

    2026年9月5日
    0873

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注