首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用户管理+赠款

用户管理+赠款
EN

Stack Overflow用户
提问于 2021-01-11 22:50:00
回答 1查看 34关注 0票数 0

我有一个包含多个表、函数、序列和类型的数据库。

我想要创建多个“管理员”-like用户:

它们都可能拥有管理此数据库中的一切(现有的和新创建的项)的所有特权;它们都具有相同的privileges;

  • they可能跨管理实体(由管理员a创建的表应该可供管理员b)

删除)。

我试图创建类似的东西,但在类型上失败了:

代码语言:javascript
复制
"GRANT ALL PRIVILEGES ON DATABASE {dbname} TO {rw_user};"
"GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO {rw_user};"
"GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO {rw_user};"
"GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO {rw_user};"
"GRANT ALL PRIVILEGES ON ALL TYPES IN SCHEMA public TO {rw_user};" --not exists
"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO {rw_user};"
"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO {rw_user};"
"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO {rw_user};"
"ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TYPES TO {rw_user};"
EN

回答 1

Stack Overflow用户

发布于 2021-01-12 10:30:03

我能想到的唯一方法(如果您不希望共享数据库用户)是这样做的:

代码语言:javascript
复制
CREATE ROLE admins;
CREATE ROLE a LOGIN NOINHERIT IN ROLE admins;
CREATE ROLE b LOGIN NOINHERIT IN ROLE admins;
CREATE SCHEMA shared;
GRANT CREATE; USAGE ON SCHEMA shared TO admins;

那么,ab都不能在shared中创建对象,除非它们执行以下操作:

代码语言:javascript
复制
SET ROLE admins;
CREATE TABLE shared.newtab (...);
RESET ROLE;

这样的表由admins拥有,ab都可以ALTERDROP

请注意,ALTERDROP仅限于对象的所有者,您不能GRANT这些权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65675645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档