mir*_*los 5 postgresql permissions
我们偶尔会遇到这样的问题:在升级某些软件和数据库时,缺乏经验(或工作过度,不排除我自己)的系统管理员(除了 Oracle 之外,我们没有单独的 DBA)以用户身份运行数据库升级脚本,而不是以用户身份运行数据库升级脚本。postgres
正确的应用程序用户。
更新:添加了重点。正如记录的那样,我们的正常操作模式涉及以普通用户身份运行这些脚本。提出这个问题是为了解决那些意外未遵循该程序的情况。
\n\n如何将(一个)数据库中所有对象的所有权(无论它们属于谁)更改为特定用户?
\n\n这里描述的方法对我不起作用,因为:
\n\nREASSIGN OWNED
显然是每个集群,而不是每个数据库(太宽泛)REASSIGN OWNED
不适用于拥有的对象postgres
我真的想要基本上相当于 Unixchown -R newowner /path
命令,只是为了整个 PostgreSQL 数据库(其中的所有模式、表、indic\xc4\x93s 等)。
所涉及的最低 PostgreSQL 版本是 9.1 (Debian wheezy),无论 Debian不稳定在任何给定时间有什么最高版本。
\n我的回答不是直接回答你的问题,而是解决你的操作方法。
您不应该以 as 身份登录,就像您不应该以 as在服务器上postgres
登录一样。root
在您的服务器上,您应该以真实用户身份登录,并sudo
在需要超级用户权限的奇怪场合使用。最好sudo su - <other_user>
不要直接使用sudo <command>
.
在 PostgreSQL 中我们可以实现更细粒度的策略。
创建一个类似于以下的角色结构:
create role admin noinherit;
grant <owner> to admin;
grant admin to <real_person>;
Run Code Online (Sandbox Code Playgroud)
然后登录为<real_person>
.
在要部署到的脚本中<owner>
,添加第一行:
set role <owner>;
Run Code Online (Sandbox Code Playgroud)
那么您应该永远不会再遇到您在问题中描述的问题。
而且您永远不需要以超级用户身份登录——除非您需要创建新的模式或用户。
归档时间: |
|
查看次数: |
1090 次 |
最近记录: |