개요
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