tym*_*mik 5 schema postgresql authorization users postgresql-9.3
是否可以在同一个数据库中创建一个由多个用户拥有或访问的模式?
我正在阅读postgres create schema
文档和postgres alter schema
文档,并且没有提供多个用户的语法。
我也在谷歌上搜索这样的解决方案,无论是简单的还是困难的,但一无所获,甚至没有找到任何解决方法。
请问您能否指出解决方案或可能的解决方法,或者让我确定这种事情无论如何都不可能?
由多个用户拥有:否
由多个用户访问:是
要授予用户(或角色)访问模式中的表的权限,您可以使用以下内容:
grant all on schema foobar to role_name;
grant all on all tables in schema foobar to role_name;
grant all on all sequences in schema foobar to role_name;
grant all on all functions in schema foobar to role_name;
Run Code Online (Sandbox Code Playgroud)
在grant all on schema
授予两个权限usage
,并create
在该模式。引用手册:“允许访问包含在指定模式中的对象(假设对象自己的权限要求也得到满足)。本质上,这允许被授权者在模式中“查找”对象“。但这并不授予从架构内的表中选择数据的特权。所以以上四个语句都是必要的。如果您不希望用户创建新对象,则可以使用grant usage on schema ...
.
如果您需要为多个用户执行此操作,则将其授予一个角色然后将该角色授予单个用户可能更容易。
如果要将授权扩展到任何新创建的表(或其他对象),则需要更改架构的默认权限:
alter default privileges in schema foobar grant all on tables to role_name;
alter default privileges in schema foobar grant all on sequences to role_name;
alter default privileges in schema foobar grant all on functions to to role_name;
alter default privileges in schema foobar grant all on types to role_name;
Run Code Online (Sandbox Code Playgroud)
如果您不是在自动提交模式下运行,请不要忘记提交这些语句。
当然,如果您只希望这些用户访问对象,请将ALL
关键字替换为SELECT
或SELECT,INSERT,UPDATE
取决于对象类型,要允许他们什么。
您可能还想为这些用户设置默认 search_path(如果他们只需要访问该单一架构)以避免完全限定对象名称
归档时间: |
|
查看次数: |
8593 次 |
最近记录: |