Выбор групп по имени current_user - PullRequest
0 голосов
/ 29 августа 2018

Я использую следующую команду для проверки групп или ролей пользователя в базе данных PostgreSQL,

select rolname from pg_authid where pg_has_role('some_username', rolname, 'member');

Как видно, я должен вручную ввести имя пользователя в запросе выше, как 'some_username' выше.

Есть ли способ, которым я могу запросить его для current_user, я имею в виду пользователя, который в настоящий момент связан с базой данных. Что-то вроде команды ниже,

select rolname from pg_authid where pg_has_role(current_user, rolname, 'member'); 

Эта команда не работает должным образом. Возвращает полный rolname столбец из pg_authid.

1 Ответ

0 голосов
/ 29 августа 2018

Чтобы получить доступ к pg_authid, вы должны быть суперпользователем, и поэтому current_user будет суперпользователем, и у этого будут все роли.

Чтобы получить эту информацию, когда вы вошли в систему с правами суперпользователя, используйте pg_roles

Цитата из руководства для pg_roles

Это просто общедоступное представление pg_authid, которое скрывает поле пароля.

select rolname 
from pg_roles 
where pg_has_role(current_user, rolname, 'member'); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...