MySQL 최적화 및 복구 작업에 필요한 최소 사용자 권한
MySQL에서 OPTIMIZE(최적화) 및 REPAIR(복구) 작업을 수행하기 위해 사용자에게 반드시 부여해야 하는 최소 권한은 SELECT(조회)와 INSERT(삽입)입니다. 즉, 이 두 가지 권한만 있으면 테이블 최적화와 복구 명령을 정상적으로 실행할 수 있습니다.
권한 부여 기본 문법
아래 문법을 사용하면 사용자에게 INSERT와 SELECT 권한을 부여할 수 있습니다.
GRANT INSERT, SELECT ON yourDatabaseName.* TO 'yourUserName'@'localhost';
실전 예제
1단계: 사용자 생성
먼저 새로운 사용자를 생성하는 쿼리는 다음과 같습니다.
mysql> CREATE USER 'Emma'@'localhost' IDENTIFIED BY 'Emma123';
Query OK, 0 rows affected (0.26 sec)
2단계: 권한 부여
위에서 생성한 사용자에게 'web' 데이터베이스의 모든 테이블에 대한 INSERT, SELECT 권한을 부여합니다.
mysql> GRANT INSERT, SELECT ON web.* TO 'Emma'@'localhost';
Query OK, 0 rows affected (0.21 sec)
3단계: 부여된 권한 확인
사용자에게 부여된 모든 권한을 조회하려면 아래 쿼리를 실행합니다.
mysql> SHOW GRANTS FOR 'Emma'@'localhost';
실행 결과는 다음과 같습니다.
+-------------------------------------------------------+
| Grants for Emma@localhost |
+-------------------------------------------------------+
| GRANT USAGE ON *.* TO `Emma`@`localhost` |
| GRANT SELECT, INSERT ON `web`.* TO `Emma`@`localhost` |
+-------------------------------------------------------+
2 rows in set (0.00 sec)
결과 해석 및 정리
출력 결과에서 확인할 수 있듯이, 'Emma' 사용자는 web 데이터베이스의 모든 테이블에 대해 SELECT와 INSERT 권한을 갖게 되며, 이 권한만으로도 OPTIMIZE TABLE과 REPAIR TABLE 명령을 실행할 수 있습니다. 참고로 USAGE ON *.*는 실질적인 데이터 접근 권한 없이 서버에 로그인할 수 있다는 의미이며, 모든 계정에 기본적으로 부여되는 항목입니다. 운영 환경에서는 보안을 위해 불필요한 ALL PRIVILEGES 부여를 피하고, 이처럼 작업에 필요한 최소한의 권한만 선택적으로 부여하는 것이 좋은 관행입니다.