仅用于序列的 Postgres 技术角色
Postgres tech role for sequence only
有角色sequence_owner。这是仅处理序列的特殊技术角色。
create role sequence_owner;
GRANT sequence_owner TO administrator;
GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA schema1 TO sequence_owner;
还有几个角色为 administrator
的用户:user1,...user42
GRANT administrator TO user1;
GRANT administrator TO user42;
使用 user1 我可以创建序列:
create sequence schema1.test_sequence;
但我无法将所有者更改为特殊 sequence_owner
角色
alter sequence schema1.test_sequence owner to sequence_owner;
有错误:
错误:模式 schema1
的权限被拒绝
我不习惯使用:
GRANT CREATE, USAGE ON SCHEMA schema1 to sequence_owner
因为在这种情况下,这个角色 sequence_owner
将拥有比它必须拥有的更多的特权。
https://www.postgresql.org/docs/11/sql-altersequence.html
不可能:
您必须拥有序列才能使用 ALTER SEQUENCE。要更改序列的架构,您还必须对新架构具有 CREATE 权限。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对序列的架构具有 CREATE 特权。
有角色sequence_owner。这是仅处理序列的特殊技术角色。
create role sequence_owner;
GRANT sequence_owner TO administrator;
GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA schema1 TO sequence_owner;
还有几个角色为 administrator
的用户:user1,...user42
GRANT administrator TO user1;
GRANT administrator TO user42;
使用 user1 我可以创建序列:
create sequence schema1.test_sequence;
但我无法将所有者更改为特殊 sequence_owner
角色
alter sequence schema1.test_sequence owner to sequence_owner;
有错误: 错误:模式 schema1
的权限被拒绝我不习惯使用:
GRANT CREATE, USAGE ON SCHEMA schema1 to sequence_owner
因为在这种情况下,这个角色 sequence_owner
将拥有比它必须拥有的更多的特权。
https://www.postgresql.org/docs/11/sql-altersequence.html
不可能: 您必须拥有序列才能使用 ALTER SEQUENCE。要更改序列的架构,您还必须对新架构具有 CREATE 权限。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对序列的架构具有 CREATE 特权。