Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 사용자 권한 확인하는 방법 – SHOW GRANTS 명령어 완벽 정리

MySQL에서 계정의 권한(Privileges)을 확인하려면 SHOW 명령어와 GRANTS 키워드를 함께 사용하면 됩니다. 이 명령어 하나만으로 현재 접속 중인 계정 또는 특정 사용자에게 부여된 모든 권한을 손쉽게 조회할 수 있습니다.

1. 기본 문법 – 현재 계정의 권한 확인

현재 로그인한 계정(root)의 권한을 확인하는 기본 문법은 다음과 같습니다.

SHOW GRANTS;

위 구문을 실행하면 현재 세션에 적용된 모든 권한 목록이 출력됩니다.

2. 특정 사용자의 권한 확인

특정 사용자의 권한을 조회하고 싶다면 FOR 절에 사용자 이름과 호스트를 지정하면 됩니다.

SHOW GRANTS FOR '사용자이름'@'호스트이름';

3. 실행 예제

예제 1) root 계정의 권한 확인

mysql> SHOW GRANTS;

실행 결과, root 계정에는 다음과 같은 전역(Global) 권한이 부여되어 있는 것을 확인할 수 있습니다.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `root`@`%` WITH GRANT OPTION

또한 MySQL 8.0부터는 아래와 같은 동적 권한(Dynamic Privileges)도 함께 표시됩니다.

GRANT BACKUP_ADMIN, BINLOG_ADMIN, CONNECTION_ADMIN, ENCRYPTION_KEY_ADMIN, GROUP_REPLICATION_ADMIN, PERSIST_RO_VARIABLES_ADMIN, REPLICATION_SLAVE_ADMIN, RESOURCE_GROUP_ADMIN, RESOURCE_GROUP_USER, ROLE_ADMIN, SET_USER_ID, SYSTEM_VARIABLES_ADMIN, XA_RECOVER_ADMIN ON *.* TO `root`@`%`

예제 2) 특정 사용자 'Bob'의 권한 확인

이번에는 사용자 이름이 'Bob'이고 호스트가 '%'(모든 호스트 허용)인 계정의 권한을 조회해 보겠습니다.

mysql> SHOW GRANTS FOR 'Bob'@'%';

출력 결과는 root와 마찬가지로 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP 등의 권한 목록과 함께 각 행 끝에 WITH GRANT OPTION이 포함되어 나타납니다. 이 옵션이 붙어 있다면 해당 사용자가 자신이 보유한 권한을 다른 사용자에게 재부여할 수 있다는 의미입니다.

참고 사항

- 호스트를 생략할 수 없으며, 반드시 '사용자'@'호스트' 형식으로 지정해야 합니다.
- 현재 로그인한 계정 기준으로 확인하려면 SHOW GRANTS FOR CURRENT_USER;를 사용할 수도 있습니다.
- 데이터베이스 단위·테이블 단위 권한까지 모두 한 번에 표시되므로, 계정 문제를 진단할 때 매우 유용합니다.