답변:
psql쉘을 사용하고 다음을 수행하십시오 .
\deu[+] [PATTERN] 같은 :
postgres=# \deu+
List of user mappings
Server | User name | FDW Options
--------+-----------+-------------
(0 rows)
그리고 모든 사용자에게 :
postgres=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------+-----------
chpert.net | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
또한 MySQL과 같은 작업을 수행 할 수 있습니다.
$ psql -c "\du"
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
chpert | | {}
postgres | Superuser, Create role, Create DB, Replication | {}
test | | {}
출력을 사용자 이름으로 만 제한하려면 psql쉘 또는 로컬 쉘 / 터미널에서 다음을 수행하십시오.
psql -c "SELECT u.usename AS "User Name" FROM pg_catalog.pg_user u;"
이전 답변에서 지적한 것처럼 빠른 방법은 3 열을 표시합니다. 를 포함하여 사용자 이름 , 역할의 목록 속성 및 회원 역할 그룹 (들).
psql -c "\du"
마지막으로, 후속 답변에서 지적했듯이 백그라운드에서 실행되는 PostgreSQL 명령은 다음 \du을 호출하여 해당 "기본"열을 표시합니다.
SELECT u.usename AS "User name",
u.usesysid AS "User ID",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create
database' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text)
WHEN u.usecreatedb THEN CAST('create database' AS
pg_catalog.text)
ELSE CAST('' AS pg_catalog.text)
END AS "Attributes"
FROM pg_catalog.pg_user u
ORDER BY 1;
(\ du를 입력 할 때 psql이 뒤에서하는 일)
마지막 부분은 PostgreSQL 메일 링리스트 에서 복사되었습니다 .
일반적으로 psql \ du에 의해 수행되는 SQL 솔루션 :
SELECT u.usename AS "User name",
u.usesysid AS "User ID",
CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create
database' AS pg_catalog.text)
WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text)
WHEN u.usecreatedb THEN CAST('create database' AS
pg_catalog.text)
ELSE CAST('' AS pg_catalog.text)
END AS "Attributes"
FROM pg_catalog.pg_user u
ORDER BY 1;
참조 : https://www.postgresql.org/message-id/1121195544.8208.242.camel@state.g2switchworks.com
psql -c '\du'