使用 psql 列出 PostgreSQL 数据库和表

本文详细介绍如何修改PostgreSQL数据库默认用户postgres的密码,包括登录、修改密码及查询权限的方法。此外,还介绍了如何使用psql工具列出数据库和表,以及查询表的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改PostgreSQL数据库默认用户postgres的密码

PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以需要修改密码,方式如下:

步骤一:登录PostgreSQL

1

sudo -u postgres psql

步骤二:修改登录PostgreSQL密码

1

ALTER USER postgres WITH PASSWORD 'postgres';

postgre查询所有用户,postgre中查询用户所拥有的权限

select * from pg_roles;

select * from pg_user;

 

权限查询:

select * from information_schema.table_privileges where grantee='cc';

在管理PostgreSQL数据库服务器时,您可能要执行的最常见任务之一就是列出数据库及其表。

PostgreSQL附带了一个名为psql的交互式工具,允许您连接到服务器并对其运行查询。在使用psql时,还可以利用它的元命令。这些命令对于脚本编写和命令行管理非常有用。所有元命令都以非引号反斜杠开头,也称为反斜杠命令。

本教程解释如何使用psql在PostgreSQL服务器中显示数据库和表。

列出数据库

您可以使用该 psql 命令以任何系统用户身份连接到 PostgreSQL 服务器。根据服务器配置,用户可能需要输入其密码才能连接到 psql 终端。要以您当前登录的用户身份访问 psql 终端,只需键入即可 psql 。

安装 PostgreSQL 软件包后,将创建名为 “postgres” 的管理用户。默认情况下,此用户可以在没有密码的情况下连接到本地 PostgreSQL 服务器。

要以 “postgres” 用户身份访问终端 psql ,请运行:

sudo -u postgres psql

该 sudo 命令允许您以其他用户身份运行命令。

从 psql 终端执行 \l 或 \list meta-command 列出所有数据库:

\l

输出将包括数据库的数量,每个数据库的名称,其所有者,编码和访问权限:

输出如下:

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

PostgreSQL服务器有三个默认创建的数据库,template0,template1 和 postgres。前两个是创建新数据库时使用的模板。

如果要获取有关数据库大小,默认表空间和描述的信息,请使用 \l+ 或 \list+ 。仅当当前用户可以连接到数据库时,才会显示数据库大小。

要在不访问 psql shell 的情况下获取所有数据库的列表,请使用 -c 如下所示的开关:

sudo -u postgres psql -c "\l"

列出数据库的另一种方法是使用以下 SQL 语句:

SELECT datname FROM pg_database;

与\l元命令不同,上面的查询将仅显示数据库的名称:

  datname  
-----------
 postgres
 odoo
 template1
 template0
(4 rows)

列出表

要首先列出特定数据库的所有表,您需要使用 \c 或者 \connect meta-command 连接到它。您登录 psql 终端的用户必须能够连接到数据库。

例如,要连接到名为 “odoo” 的数据库,您应键入:

\c odoo

切换数据库后,使用 \dt 列出所有数据库表:

输出将包括表的数量,每个表的名称及其架构,类型和所有者:

                              List of relations
 Schema |                        Name                         | Type  | Owner 
--------+-----------------------------------------------------+-------+-------
 public | base_import_import                                  | table | odoo
 public | base_import_mapping                                 | table | odoo
 public | base_import_tests_models_char                       | table | odoo
 ...
 public | web_editor_converter_test_sub                       | table | odoo
 public | web_tour_tour                                       | table | odoo
 public | wizard_ir_model_menu_create                         | table | odoo
(107 rows)

如果数据库为空,则输出将如下所示:

No relations found.

要获取有关表大小的信息,请使用说明 \dt+。

<think>嗯,用户问的是怎么用psql列出所有的数据库。首先,我得回想一下psql的常用命令psqlPostgreSQL的交互式终端工具,对吧?那用户可能已经安装好了PostgreSQL,并且需要查看现有的数据库。 用户可能刚接触PostgreSQL,不太熟悉命令行操作。所以需要给出明确的步骤。首先,连接到psql的方式可能有几种,比如直接运行psql命令,如果已经配置了环境变量的话。或者可能需要指定用户主机,比如psql -U 用户名 -h 主机名。不过默认情况下,可能直接用psql就能进入,特别是本地开发环境。 接下来,进入psql后,需要知道如何列出所有数据库。我记得PostgreSQL的元命令是以反斜杠开头的,比如\l或者\list,这两个命令应该都可以显示数据库。另外,还有\list+或者\l+可以显示更详细的信息,包括数据库的大小、所有者等。所以可能需要把这些选项都告诉用户,让他们根据需要选择。 另外,用户可能不想进入交互模式,而想直接在命令行中执行命令并退出。这时候可以使用-c选项,比如psql -c "\l"。不过要注意的是,执行这个命令可能需要指定目标数据库,因为psql默认会连接到与当前用户同名的数据库,如果不存在的话会报错。所以可能需要加上-d postgres或者某个存在的数据库,或者使用模板数据库template1。或者更简单的方式是使用-l选项,也就是psql -l,这个命令可以在不进入交互模式的情况下列出所有数据库,可能更方便。 还需要考虑权限问题,如果用户没有足够的权限,可能看不到所有的数据库。这时候可能需要提示用户检查权限,或者使用超级用户账号,比如postgres用户来执行命令。 总结一下,回答应该包括两种方法:一种是进入psql交互模式后使用\l或\list命令;另一种是在命令行直接使用psql -l或者psql -c "\l"的方式。同时要提醒可能的权限问题需要指定数据库的情况。 另外,注意用户提到的系统级指令,比如用中文回答,正确使用LaTeX格式。不过在这个问题中可能不需要数学公式,所以这部分可能用不上。但需要确保回答结构清晰,分步骤说明,确保用户能一步步操作。</think>要使用 `psql` 列出所有数据库,可以按照以下步骤操作: --- ### **方法1:在 `psql` 交互模式下操作** 1. **连接到 PostgreSQL** 在终端输入以下命令(根据实际情况调整用户名主机): ```bash psql -U <用户名> -h <主机名> ``` 默认情况下(如本地开发环境),可直接输入: ```bash psql ``` 2. **执行列出数据库命令** 进入 `psql` 后,输入以下元命令(以反斜杠开头): ```sql \l ``` 或完整命令: ```sql \list ``` **输出示例**: ``` List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+---------+-------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres ``` 3. **查看详细信息(可选)** 添加 `+` 可显示更多细节(如数据库大小): ```sql \l+ ``` --- ### **方法2:直接在命令行中操作** 如果不想进入交互模式,可通过以下命令直接列出数据库: ```bash psql -l ``` 或指定数据库并执行元命令(例如使用默认的 `postgres` 数据库): ```bash psql -d postgres -c "\l" ``` --- ### **注意事项** 1. **权限问题**:如果权限不足,可能无法看到所有数据库。需确保使用有权限的用户(如 `postgres` 超级用户)。 2. **连接参数**:根据实际情况添加 `-U <用户名>`、`-h <主机名>` 或 `-p <端口>` 参数。 通过以上方法,可以快速列出 PostgreSQL 中的所有数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值