Database

[MySQL] SHOW GRANTS - 계정 권한 확인

비번변경 2023. 9. 19. 21:12

개요

Airflow와 같은 서비스의 버전을 업그레이드하다 보면 서비스가 사용하는 RDB의 스키마가 변경되는 경우가 있어 DB에 대한 DDL (CREATE, ALTER, DROP, TRUNCATE) 권한이 필요할 수 있다.

현재 DB 계정에게 부여된 권한을 확인해본다.

 

 

사용자 조회

권한을 확인할 사용자를 확인한다.

SELECT host, user
FROM mysql.user;

| host      | user             |
| --------- | ---------------- |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
| localhost | test             |

 

test@localhost 계정의 권한을 확인해 보자.

 

 

SHOW GRANTS - 권한 확인

SHOW GRANTS 문은 MySQL 사용자 계정 또는 역할에 할당된 권한 및 역할을 표시한다. 현재 사용자의 권한이 아닌, 다른 사용자의 권한을 확인할 때는 mysql 시스템 스키마에 대한 SELECT 권한이 필요하다.

SHOW GRANTS
    [FOR user_or_role
        [USING role [, role] ...]]
        
-- 예시
SHOW GRANTS;
SHOW GRANTS FOR 'test'@'localhost';

FOR 절로 사용자를 지정하지 않으면 현재 사용자의 권한을 확인한다. 아래에 나열한 쿼리는 모두 현재 사용자의 권한을 확인한다.

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

 

실행 결과 예시

test@localhost 계정의 권한은 다음과 같다.

| Grants for test@localhost                                                      |
| ------------------------------------------------------------------------------ |
| GRANT USAGE ON *.* TO `test`@`localhost`                                       |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `test`.* TO `test`@`localhost` |

SHOW GRANTS 문은 계정의 권한 및 역할 할당을 복제할 수 있도록 GRANT 명령문 형식을 반환한다.

 

 

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/show-grants.html