在 Postgres 中,我试图USAGE
将公共模式授予特定角色 -
GRANT ALL ON SCHEMA public TO MyRole;
Run Code Online (Sandbox Code Playgroud)
问题是这个命令产生了一个错误——
错误:角色“myrole”不存在
然而,这个角色确实存在。列出角色输出下表 -
Role name | Attributes | Member of
---------------+------------------------------------------------------------+-----------------
rds_user | Create role, Create DB +| {rds_superuser}
| Password valid until infinity |
MyRole | | {}
rds_superuser | Cannot login | {}
rdsadmin | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
| Password valid until infinity |
rdsrepladmin | No inheritance, Cannot login, Replication | {}
Run Code Online (Sandbox Code Playgroud)
我是 Postgres 的新手,所以我可能会遗漏一些微妙的命令,但据我所知,我已经完成了我需要做的一切。任何人都可以建议问题可能是什么以及我应该如何解决它?
您的问题是您所追求的角色名称中包含大写字母。在 PostgreSQL 中混合大小写通常是一个坏主意,因为您需要双引号这样的名称。
所以你的赠款应该看起来像
GRANT ALL ON SCHEMA public TO "MyRole";
Run Code Online (Sandbox Code Playgroud)
我建议将该角色重命名为“myrole”,以避免以后出现此类问题。
归档时间: |
|
查看次数: |
9593 次 |
最近记录: |