접속한 계정이 어떤 권한을 가지고 있는지 확인할 수 있는 방법을 정리해 보겠습니다.
현재 사용자 권한이 sysadmin인지 확인
SELECT IS_SRVROLEMEMBER('sysadmin');
(반환값이 1이면 sysadmin 권한이 있는 것이고, 0이면 없는 것)
현재 사용자가 속한 모든 서버 역할 확인
SELECT r.name
FROM sys.server_role_members m
JOIN sys.server_principals r ON m.role_principal_id = r.principal_id
JOIN sys.server_principals u ON m.member_principal_id = u.principal_id
WHERE u.name = SYSTEM_USER;
현재 사용자 확인
SELECT USER FROM DUAL;
현재 사용자의 역할 확인
SELECT granted_role
FROM user_role_privs;
현재 사용자의 시스템 권한 확인
SELECT privilege
FROM user_sys_privs;
DBA 역할 여부 확인 (관리자 권한 확인)
SELECT 'YES'
FROM user_role_privs
WHERE granted_role = 'DBA';
현재 사용자 확인
SELECT CURRENT_USER();
현재 사용자의 권한 확인
SHOW GRANTS FOR CURRENT_USER();
특정 사용자의 권한 확인 (관리자만 가능)
SHOW GRANTS FOR 'username'@'hostname';
현재 사용자 확인
SELECT current_user;
현재 사용자가 속한 역할(role) 확인
SELECT r.rolname
FROM pg_roles r
JOIN pg_auth_members m ON m.roleid = r.oid
JOIN pg_roles u ON m.member = u.oid
WHERE u.rolname = current_user;
현재 사용자가 superuser인지 확인
SELECT usesuper
FROM pg_user
WHERE usename = current_user;