2016-02-09 3 views
2

Я хотел убрать роли в моей базе данных postgreSQL, когда я наткнулся на одну роль, которую я никогда сознательно не создал. Я предположил, что это имеет какое-то отношение к пользователю Linux, который размещает базу данных, но странно, что система притворяется, что пользователь не существует, когда я пытаюсь изменить или отбросить роль.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 

Итак, postgres - мой суперпользователь, а standard_wimi - роль, которую я только что создал. Сначала я попытался отбросить роль postgreSQL, потому что кажется, что мне это не нужно, и поэтому я думаю, что этого не должно быть (с такими привилегиями). Но любая попытка отбросить или изменить роль дает следующее:

ALTER ROLE postgreSQL NOLOGIN; 
ERROR: role "postgresql" does not exist 

Может кто-нибудь, пожалуйста, объясните мне это поведение? Откуда взялась эта роль и почему psql притворяется, что ее не существует?

Заранее благодарен!

ответ

2

Роли чувствительны к регистру, а каждый чувствительный к регистру идентификатор, который не ограничен, преобразуется в нижний регистр.

ALTER ROLE "postgreSQL" NOLOGIN; 
Смежные вопросы