当我偶然发现一个我从未有意识创建过的角色时,我想整理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假装它不存在?
提前致谢!
答案 0 :(得分:2)
角色区分大小写,并且每个未分隔的区分大小写的标识符都会转换为小写。
ALTER ROLE "postgreSQL" NOLOGIN;