在公共架构上授予使用权限时出现“角色不存在”错误,但角色确实退出

Dav*_*ard 4 schema postgresql

在 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 的新手,所以我可能会遗漏一些微妙的命令,但据我所知,我已经完成了我需要做的一切。任何人都可以建议问题可能是什么以及我应该如何解决它?

dez*_*zso 9

您的问题是您所追求的角色名称中包含大写字母。在 PostgreSQL 中混合大小写通常是一个坏主意,因为您需要双引号这样的名称。

所以你的赠款应该看起来像

GRANT ALL ON SCHEMA public TO "MyRole";
Run Code Online (Sandbox Code Playgroud)

我建议将该角色重命名为“myrole”,以避免以后出现此类问题。