tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们

控制台操作指引

PDF
聚焦模式
字号
最后更新时间: 2025-07-22 20:25:21
本文主要内容为在控制台进行界面化的数据库账号操作。

创建账号

腾讯云数据库 PostgreSQL 未开放 superuser 角色属性和 pg_execute_server_program、pg_read_server_files、pg_write_server_files 角色供用户使用。但因为部分操作必须要求 superuser 进行,所以云数据库 PostgreSQL 提供了 pg_tencentdb_superuser 角色用以替代 superuser。更多 pg_tencentdb_superuser 介绍请参考 用户与权限操作
控制台账号类型分为两类:pg_tencentdb_superuser 账号和普通账号。一个账号,只要是 pg_tencentdb_superuser 角色的成员,则为 pg_tencentdb_superuser 账号,否则为普通账号。
您可以登录 PostgreSQL 控制台,在实例列表,单击实例 ID操作列的管理,进入实例详情页面。单击数据库管理 > 账号管理 > 创建账号来进行新建操作。


说明:
在控制台创建账号时,其账号名称需满足如下条件:账号名由字母(a-z, A-Z)、数字(0-9)、下划线(_)组成,以字母或(_)开头,最多63个字符。不能使用系统保留关键字,不能为 postgres,且不能由 pg_ 或 tencentdb_ 开头。
控制台只支持大版本为 9.5 及以上的实例创建账号。低于该版本的实例请先 升级实例

账号展示

说明:
1. 控制台账号列表可以展示数据库实例中所有状态正常和锁定中的账号。这些账号可以是控制台创建,也可以是使用其它客户端连上数据库创建。
2. 控制台只支持 user 的展示,不支持 role 的展示。
3. 只有在控制台创建的账号,管理系统才会记录其创建时间。请知悉。
4. 当一个账号的系统权限有 nologin 或者 CONNECTION 为0,则该账号的状态为锁定中。
5. 控制台仅能支持符合账号名称要求的数据库账号的展示,请知悉。
6. 修改时间字段当前不包含重置密码时间的记录,请知悉。
您通过控制台、其它客户端或者程序创建的数据库账号,均可以展示在账号列表。具体如下图所示:


修改账号

重置密码

您可以在控制台中重置已存在账号的登录密码。如果该账号当前已经登录数据库,则重置密码后对后续该账号的链接有效。单击操作 > 重置密码,具体如下图所示:

弹框如下图所示:


修改备注

您可以在控制台修改账号的备注,单击操作 > 更多 > 修改备注,具体如下图所示:

弹框如下图所示:


修改类型

控制台账号类型分为两类:pg_tencentdb_superuser 账号和普通账号。一个账号,只要是 pg_tencentdb_superuser 角色的成员,则为pg_tencentdb_superuser 账号,否则为普通账号。更多 pg_tencentdb_superuser 介绍请参考 用户与权限操作
您可以在控制台修改账号类型,单击操作 > 更多 > 修改类型,具体如下图所示:

弹框如下图所示:


修改权限

账号对象权限说明

一个账号的对象权限由三部分组成:
从所属角色继承的权限:在 PostgreSQL 中,一个用户可以属于一个或多个角色,这些角色可以具有特定的权限。例如,一个角色可能有权限访问某个数据库或修改某个表。如果一个用户属于这个角色,那么他将继承这个角色的所有权限。
public 继承的权限:如前面所述,public 是一个特殊的预定义组,所有的用户都自动属于这个组。如果为 public 组授予了某个权限,那么所有用户都将拥有这个权限。
被直接授予的权限:除了从角色和 public 继承的权限外,一个用户还可以直接被授予权限。例如,数据库管理员可以直接授予一个用户权限,让他可以访问某个数据库或修改某个表。
这三个方面的权限可以相互覆盖。要想 REVOKE 掉一个 user 的某个权限,必须三个地方都必须 REVOKE 掉才行。而对象权限的授予与回收对于 OWNER 不生效,OWNER 对一个对象具备任何权限。
注意:
控制台的修改权限能力针对直接授予的权限。如果一个账号在回收权限之后该权限还在,您需要进一步排查下该用户是否是从 public 组继承了权限或者是该对象的 OWNER。
您可以在控制台对一个账号同时赋予或者回收多个对象的多个不同权限,也可以批量对一个账号授予或者回收多个同类对象的多个不同权限。

对一个账号赋予或者回收多个对象的多个不同权限

单击操作 > 修改权限,弹框如下:

注意:
由于账号的权限可以通过多个客户端或者程序来修改,因此强烈建议您每次在控制台操作权限之前单击刷新按钮,拉取最新的权限。

注意:
public 是一个特殊的预定义组,所有的用户都自动属于这个组。当为 public 组授予权限时,实际上是为所有用户授予了权限,包括现有的和将来创建的用户。
如果某种对象的某种权限已经被 public 组所拥有,要想 REVOKE 该权限,只有从 public 组中去除该权限才能真正生效。
一旦某权限从 public 组中 REVOKE ,则所有用户都将失去该权限,请谨慎操作。
为了帮助您在错误单击之后能迅速恢复至初始化状态,单击重置按钮,则本次界面操作将全部恢复至当前的账号权限状态,您可以在此基础上重新操作。
单击确定,系统将汇总您本次对当前选择的账号即将发起的所有权限操作,便于您二次确认。具体如下图所示:

如上图所示,本次账号的权限修改操作涉及 nomal_1和 db_priv 两个 database,分别如下:
1. normal_1数据库的操作涉及如下三个:
1.1 normal_1数据库进行 REVOKE TEMPORARY 操作。
1.2 sche_priv 模式的 amyttt 表格的 id 字段进行 REVOKE INSERT 操作。
1.3 sche_priv 模式的 am_s 序列进行 REVOKE UPDATE 操作。
2. db_priv 数据库进行 REVOKE CREATE 操作。

对一个账号赋予或者回收多个同一类对象的多个不同权限

当您需要对一个账号同时操作同一类对象的多个权限时,您可以使用批量授权/回收功能。弹框如下:

注意:
批量授权/回收功能针对一个账号对于同一类对象的批量操作。不支持某个批量操作既操作了 database,又操作了 schema。
在批量模式下,因为权限可能各不一致,因此不支持已授权状态的展示。请谨慎操作。

删除账号

当您不再需要某个数据库账号时,控制台支持删除操作,请单击操作 > 更多 > 删除账号,具体如下图所示:

只有在账号没有任何对象权限时,该账号才允许被删除,否则删除账号报错,具体如下图所示:

如果数据库账号删除报错,我们可以查询该账号是否在某些对象上有相应的权限,或者是某些对象的 OWNER。如果是,则回收相应的权限或者替换对象的 OWNER 后再进行该账号的删除即可。PostgreSQL 中使用 aclitem 来表示一个具体的数据库对象上的权限。具体解释请参考 数据库权限概述
查询某个账号是否具有某些对象的权限方法如下:
(1)查询该账号是否对某些 database 有权限,命令参考如下:
nomal_1=> select datname,datacl from pg_database;
datname | datacl
-----------+------------------------------------------------------------------------
template1 | {=c/postgres,postgres=CTc/postgres}
template0 | {=c/postgres,postgres=CTc/postgres}
postgres | {=Tc/postgres,postgres=CTc/postgres,pg_tencentdb_superuser=C/postgres}
nomal_1 | {=Tc/nomal_usr1,nomal_usr1=CTc/nomal_usr1}
db_priv | {=Tc/dbadmin,dbadmin=Tc/dbadmin}
(5 rows)
如上图所示,nspacl 字段清晰的描述了账号对于 schema 的相应权限。我们找到对应的账号的权限,然后回收相应的权限后再删除账号。
(2)查询该账号是否对某些 schema 有权限,您可以在每个 database 下查询,命令参考如下:
nomal_1=> select nspname,nspacl from pg_namespace;
nspname | nspacl
--------------------+----------------------------------------------------------
pg_toast |
pg_temp_1 |
pg_toast_temp_1 |
pg_catalog | {postgres=UC/postgres,=U/postgres}
public | {postgres=UC/postgres,=UC/postgres}
information_schema | {postgres=UC/postgres,=U/postgres,nomal_usr1=C/postgres}
sche_priv | {dbadmin=UC/dbadmin}
(7 rows)
如上图所示,nspacl 字段清晰的描述了账号对于 schema 的相应权限。我们找到对应的账号的权限,然后回收相应的权限后再删除账号。
(3)查询该账号是否对某些对象有权限,您可以在每个 database 下查询,命令参考如下:
nomal_1=> select relname,a.typname as reltype ,relacl from pg_class join pg_type a on pg_class.reltype=a.oid ;
查询某个账号是否是某个对象的 OWNER,示例如下:
(1)查询账号是否为某个 database 的 OWNER,示例如下:
nomal_1=> SELECT r.rolname,d.datdba,datname AS database_name FROM pg_database d left JOIN pg_catalog.pg_roles r on d.datdba=r.oid WHERE d.datdba in (SELECT usesysid FROM pg_user WHERE usename in('dbadmin','nomal_usr1','nomal_usr2'));
rolname | datdba | database_name
------------+--------+---------------
dbadmin | 16398 | db_priv
nomal_usr1 | 16401 | nomal_1
(2)查询账号是否为某个 schema 的 OWNER,示例如下:
nomal_1=> SELECT n.nspname as schema_name, pg_catalog.pg_get_userbyid(n.nspowner) as schema_owner FROM pg_catalog.pg_namespace n ORDER BY schema_name;
schema_name | schema_owner
--------------------+--------------
information_schema | postgres
pg_catalog | postgres
pg_temp_1 | postgres
pg_toast | postgres
pg_toast_temp_1 | postgres
public | postgres
sche_priv | dbadmin
(3)查询账号是否为某个对象的 OWNER,示例如下:
nomal_1=> select * from (select relname,relnamespace as schema_name ,a.typname as reltype,pg_catalog.pg_get_userbyid(relowner )as owner from pg_class join pg_type a on pg_class.reltype=a.oid ) d where owner in('dbadmin','nomal_1');
relname | schema_name | reltype | owner
----------------+-------------+----------------+---------
pg_toast_16488 | 99 | pg_toast_16488 | dbadmin
amyttt | 16480 | amyttt | dbadmin
am | 2200 | am | dbadmin
am_s | 16480 | am_s | dbadmin
bug_id_seq | 2200 | bug_id_seq | dbadmin
bug | 2200 | bug | dbadmin
pg_toast_16507 | 99 | pg_toast_16507 | dbadmin

锁定账号

您可以锁定当前已经存在的账号,单击操作 > 锁定账号,具体如下图所示:

弹框如下图所示:

一个账号被锁定之后,其状态会变为锁定中,具体如下图所示:
说明:
一个账号被执行锁定操作,管理系统会修改系统权限为 NOLOGIN,同时修改 CONNECTION 为0。
一个账号被执行锁定操作,则当前已经登录的连接会立即生效。

当一个账号被锁定之后,可以在控制台执行解锁操作,单击操作 > 更多 > 解锁账号,具体如下图所示:

说明:
当一个账号被执行解锁操作,则管理系统会修改账号的系统权限为 LOGIN,同时修改 CONNECTION 为-1。

导出列表

控制台支持两种账号列表导出,分别为下载当前页数据,下载所有数据。如下图所示:


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈