emm*_*dee 1 postgresql permissions amazon-rds
因此,我遇到的根本问题是尝试将我的本地 Postgres 10.5 实例迁移到 RDS。RDS 不向最终用户提供该SuperUser
角色,因此当我尝试从 pg_dump 导入时遇到了大量权限问题。
例如,以用户身份登录postgres
- 这是我创建 RDS 实例时创建的用户。亚马逊所说的“root用户”:
CREATE SCHEMA f_site;
GRANT ALL ON SCHEMA f_site TO postgres;
GRANT ALL PRIVILEGES ON SCHEMA f_site TO postgres;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA f_site TO postgres;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA f_site TO postgres;
GRANT ALL PRIVILEGES ON DATABASE mydb to postgres;
Run Code Online (Sandbox Code Playgroud)
这些都已设置完毕,没有错误。现在,所有者发生了变化:
ALTER SCHEMA f_site OWNER TO schemaadmin;
Run Code Online (Sandbox Code Playgroud)
很好,但是如果我尝试立即运行另一个授权,只是为了测试我的权限,仍然以用户身份登录postgres
,同一会话:
GRANT ALL PRIVILEGES ON SCHEMA f_site TO postgres;
ERROR: permission denied for schema f_site
Run Code Online (Sandbox Code Playgroud)
基本上,我试图通过向postgres
用户授予其创建的所有内容的完全授权来创建“伪超级用户”,然后将该对象的所有权转移给另一个角色。
这是因为我的 pgdump 备份中的第一行本质上是创建模式并设置模式所有者,然后(数千行之后)对其进行更改/添加。通常对于超级用户来说这不会是一个问题。
感谢您的任何建议。
好吧,在做了几次搜索后就弄清楚了这一点。
本质上,您需要将最终拥有该对象的相同角色授予您正在使用的用户。
所以在我的例子中:postgres
是我想成为我的“伪超级用户”的用户,schemaadmin
也是将拥有对象的用户角色。
GRANT schemaadmin TO postgres;
Run Code Online (Sandbox Code Playgroud)
之后,schemaadmin 拥有的所有内容,postgres 都可以修改。
归档时间: |
|
查看次数: |
5632 次 |
最近记录: |