用户权限管理

本文介绍了用户和权限管理的方法。

用户管理

实例创建过程中,会提示用户指定初始用户名和密码,这个初始用户为“根用户”。实例创建好后,用户可以使用该根用户连接数据库。使用psql(PostgreSQL或Greenplum的客户端工具)连接数据库后,通过\du+命令可以查看所有用户的信息,示例如下:

重要

除了根用户外,还有其他内部管理用户被创建。

postgres=> \du+

返回结果如下:

                                List of roles
  Role name   |            Attributes             | Member of |  Description
--------------+-----------------------------------+-----------+---------------
 root_user    |                                   |           | rds_superuser
 ...

目前,AnalyticDB PostgreSQL版没有开放SUPERUSER权限,对应的是 RDS_SUPERUSER,这一点与云数据库RDS(PostgreSQL)中的权限体系一致。所以,根用户(如上面的示例中的root_user)具有RDS_SUPERUSER权限,这个权限属性只能通过查看用户的描述(Description)来识别。根用户具有如下权限:

  • 具有CREATEROLE、CREATEDB和LOGIN权限,即可以用来创建数据库和用户,但没有SUPERUSER权限。

  • 查看和修改其它非超级用户的数据表,执行SELECT、UPDATE、DELETE或更改所有者(Owner)等操作。

  • 查看其它非超级用户的连接信息、撤销(Cancel)其SQL或终止(Kill)其连接。

  • 执行CREATE EXTENSION和DROP EXTENSION命令,创建和删除插件。

  • 创建其他具有RDS_SUPERUSER权限的用户,示例如下:

    CREATE ROLE root_user2 RDS_SUPERUSER LOGIN PASSWORD 'xyz';

权限管理

用户可以在数据库(Database)、模式(Schema)、表等多个层次管理权限。赋予一个用户表上的读取权限,但收回修改权限,示例如下:

GRANT SELECT ON TABLE t1 TO normal_user1;
REVOKE UPDATE ON TABLE t1 FROM normal_user1;
REVOKE DELETE ON TABLE t1 FROM normal_user1;