【发布时间】:2020-05-07 01:19:36
【问题描述】:
当我使用 "CREATE USER user1 WITH PASSWORD 'aaaaaaaa' 创建用户时 它还在 PG_ROLES 表中创建一个角色名称与“user1”相同的角色
这是执行此操作的触发器吗?还是默认行为?
【问题讨论】:
标签: sql postgresql
当我使用 "CREATE USER user1 WITH PASSWORD 'aaaaaaaa' 创建用户时 它还在 PG_ROLES 表中创建一个角色名称与“user1”相同的角色
这是执行此操作的触发器吗?还是默认行为?
【问题讨论】:
标签: sql postgresql
假设您运行的不是很旧 (CREATE USER 的文档对此进行了解释:
CREATE USER 现在是 CREATE ROLE 的别名。唯一的区别是 当命令拼写为 CREATE USER 时,LOGIN 假定为 默认,而当命令拼写为 CREATE 时假定为 NOLOGIN 角色。
文档的Database Roles 部分提供了更多详细信息:
角色的概念包含“用户”和“组”的概念。在 PostgreSQL 8.1 之前的版本,用户和组是不同的种类 实体,但现在只有角色。任何角色都可以充当用户, 一组,或两者兼而有之。
system catalogs 文档解释说:
pg_roles 视图提供对数据库角色信息的访问。
因此基于此,预计运行CREATE USER 将对pg_roles 产生影响。
【讨论】:
pg_authid 和pg_db_role_setting 中。 PG_USER 和 PG_ROLES 都是从这些目录访问数据的视图(不是表)(PG_USER 间接执行此操作)。因此,添加 100 个用户将“添加”100 个角色(添加具有登录权限的角色将“添加”一个用户)。