将postgresql数据库的权限授予其他用户

将postgresql数据库的权限授予其他用户,第1张

概述我正在尝试为每个用户建立一个带有PostgreSQL数据库的系统,并为相关帐户建立一个 PHP-FPM资源池.我需要将数据库的所有权限授予其他用户,但似乎只能对表执行此 *** 作. 我试过了 grant all privileges on database username to username_shadow 但这只能提供有限的特权. 我已升级到PGSQL 9.2,它能够授予模式权限,但我无法获得有用 我正在尝试为每个用户建立一个带有Postgresql数据库的系统,并为相关帐户建立一个 PHP-FPM资源池.我需要将数据库的所有权限授予其他用户,但似乎只能对表执行此 *** 作.

我试过了

grant all privileges on database username to username_shadow

但这只能提供有限的特权.

我已升级到PGsql 9.2,它能够授予模式权限,但我无法获得有用的结果.如何让另一个用户拥有同一数据库中第一个的所有权限?

不要试图复制这样的权利集合,它将成为管理的噩梦.使用角色和继承.

相反,创建一个RolE(组)并使两个用户都成为该角色的成员.为角色授予任何所需对象所需的权限和所有权,用户将自动继承这些访问权限.

要进行转换,要么:

>通过重命名现有用户并将其LOGIN向右删除,将其从登录角色(用户)转换为非登录角色(组),然后使用原始名称创建新用户,将现有用户转变为共享角色;要么
>手动授予新角色所有必需的权利,使用GRANT … ON DATABASE,GRANT … ON SCHEMA,GRANT …在SCHEMA的所有表格等

这是第一种方法的演示.假设我们有一个名为test的原始用户,拥有表的所有权和其他一些授权:

regress=# CREATE USER test WITH PASSWORD 'original user pw';CREATE RolEregress=# CREATE table testtab(x integer);CREATE tableregress=# ALTER table testtab OWNER TO test;ALTER table

我们可以将其转换为共享角色,并使具有相同名称的新用户:

regress=# ALTER RolE test REname TO test_group;NOTICE:  MD5 password cleared because of role renameALTER RolEregress=# ALTER RolE test_group NolOGIN;ALTER RolEregress=# CREATE USER test IN GROUP test_group PASSWORD 'original user pw';CREATE RolE

只要您设置相同的密码,用户就不会注意到差异.

您现在可以创建一个新用户并将其添加到同一角色,使其具有与原始测试用户在将其转换为角色test_group之前相同的访问权限.在这种情况下,我使用创建用户的单独步骤,然后授予他们角色成员资格;效果和上面一样,我只是告诉你两种不同的方法:

regress=# CREATE USER newuser PASSWORD 'fred';CREATE RolEregress=# GRANT test_group TO newuser;GRANT RolE

现在newuser可以SELECT * FROM testtab,即使testtab由用户测试拥有,并且没有GRANT允许其他用户访问它.

总结

以上是内存溢出为你收集整理的将postgresql数据库的权限授予其他用户全部内容,希望文章能够帮你解决将postgresql数据库的权限授予其他用户所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存