PostgreSql 数据库对象操作——角色

283 阅读2分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

更改角色属性设置

数据库超级用户能够更改任何角色的这些设置,具有 CREATEROLE 权限的角色能够更改除 SUPERUSER,REPLICATION 和 BYPASSRLS 外的设置,但是只能为非超级用户和非复制角色修改,普通角色只能更改它们自己的口令。

ALTER ROLE|USER role_name WITH SUPERUSER|NOSUPERUSER;
ALTER ROLE|USER role_name WITH CREATEDB|NOCREATEDB;
ALTER ROLE|USER role_name WITH CREATEROLE|NOCREATEROLE;
ALTER ROLE|USER role_name WITH INHERIT|NOINHERIT;
ALTER ROLE|USER role_name WITH LOGIN|NOLOGIN;
ALTER ROLE|USER role_name WITH REPLICATION|NOREPLICATION;
ALTER ROLE|USER role_name WITH BYPASSRLS|NOBYPASSRLS;
ALTER ROLE|USER role_name WITH CONNECTION LIMIT connlimit;
ALTER ROLE|USER role_name WITH PASSWORD 'password'|NULL;
ALTER ROLE|USER role_name VALID UNTIL 'timestamp';
ALTER ROLE|USER role_name VALID UNTIL 'infinity';

role_name:角色名。
SUPERUSER|NOSUPERUSER:更改角色是否为超级用户。
CREATEDB|NOCREATEDB:更改角色是否具有创建数据库权限。
CREATEROLE|NOCREATEROLE:更改角色是否具有创建角色权限。
INHERIT|NOINHERIT:更改角色是否可以继承权限。
LOGIN|NOLOGIN:更改角色是否具有登录权限。
REPLICATION|NOREPLICATION:更改角色是否具有复制权限。
BYPASSRLS|NOBYPASSRLS:更改角色是否可绕过行级安全性(RLS)策略。注意 pg_dump 将默认把 row_security 设置为 OFF,以确保一个表的所有内容被转储出来。如果运行 pg_dump 的用户不具有适当的权限,将会返回一个错误。 但是,超级用户和被转储表的拥有者总是可以绕过 RLS。
CONNECTION LIMIT connlimit:如果角色能登录,这指定该角色能建立多少并发连接。-1(默认值)表示无限制。
PASSWORD 'password'|NULL:更改密码或置空密码。
VALID UNTIL 'timestamp':设置密码有效期。
VALID UNTIL 'infinity':设置密码为永久有效。

更改角色名

数据库超级用户能重命名任何角色。具有 CREATEROLE特权的角色能够重命名任何非超级用户角色。当前的会话 用户不能被重命名。

ALTER ROLE|USER role_name RENAME TO new_name;

role_name:当前角色名。
new_name:要更改的角色名。

更改角色参数配置

超级用户能够更改任何人的会话默认值,具有 CREATEROLE 特权的角色 能够更改非超级用户的默认值,普通角色只能为它们自己设置默认值。

ALTER ROLE|USER role_name {IN DATABASE name} SET configuration_parameter {TO|=} {value|DEFAULT};
ALTER ROLE|USER role_name {IN DATABASE name} SET configuration_parameter FROM CURRENT;
ALTER ROLE|USER role_name {IN DATABASE name} RESET configuration_parameter;
ALTER ROLE|USER role_name {IN DATABASE name} RESET ALL;

role_name:角色名。
SET configuration_parameter {TO|=} {value|DEFAULT}:设置参数值,应用于角色之后连接的新会话。
RESET configuration_parameter:重置角色当前会话设置的参数值。
RESET ALL:重置角色当前会话设置的所有参数值。
SET configuration_parameter FROM CURRENT:将角色当前会话的参数值设置为数据库整体的参数值。