PostgreSQL:角色显然存在但不存在?

时间:2016-02-09 17:03:46

标签: postgresql psql

当我偶然发现一个我从未有意识创建过的角色时,我想整理postgreSQL数据库中的角色。我认为它与托管数据库的Linux用户有关,但奇怪的是当我尝试改变或放弃角色时,系统假装用户不存在。

json

所以,postgres是我的超级用户,而standard_wimi是我刚刚创建的角色。起初我试图删除postgreSQL的角色,因为它似乎我不需要它,因此我认为它不应该存在(具有这些特权)。但任何放弃或改变角色的企图都会产生这样的结果:

select * from pg_roles;
rolname    | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil | rolconfig |  oid
---------------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------+-----------+-------
postgreSQL    | t        | t          | t             | t           | t            | t           | f              |           -1 | ********    |               |           | 16387
postgres      | t        | t          | t             | t           | t            | t           | t              |           -1 | ********    |               |           |    10
standard_wimi | f        | t          | f             | f           | f            | f           | f              |           -1 | ********    |               |           | 17992 enter code here

有人可以向我解释一下这种行为吗?角色来自哪里,为什么psql假装它不存在?

提前致谢!

1 个答案:

答案 0 :(得分:2)

角色区分大小写,并且每个未分隔的区分大小写的标识符都会转换为小写。

ALTER ROLE "postgreSQL" NOLOGIN;