首页 > 解决方案 > 为什么 CREATE USER 更新 PG_ROLES 表?

问题描述

当我使用“CREATE USER user1 WITH PASSWORD 'aaaaaaaa' 创建一个用户时,它还在 PG_ROLES 表中创建一个角色名称与“user1”相同的角色

这是执行此操作的触发器吗?还是默认行为?

标签: sqlpostgresql

解决方案


假设您没有运行非常旧(<8.1)版本的 Postgresql,CREATE USER的文档对此进行了解释:

CREATE USER 现在是 CREATE ROLE 的别名。唯一的区别是,当命令拼写为 CREATE USER 时,默认假定为 LOGIN,而当命令拼写为 CREATE ROLE 时假定为 NOLOGIN。

文档的“数据库角色”部分提供了更多详细信息:

角色的概念包含了“用户”和“组”的概念。在 8.1 之前的 PostgreSQL 版本中,用户和组是不同种类的实体,但现在只有角色。任何角色都可以充当用户、组或两者兼而有之。

系统目录文档解释说:

视图 pg_roles 提供对有关数据库角色的信息的访问。

因此,基于此可以预期,跑步CREATE USER会对pg_roles.


推荐阅读