MySQL에서 계정 권한과 관련된 작업을 수행한 후에는 FLUSH PRIVILEGES 문을 사용해 서버에 권한 테이블(grant tables)을 다시 로드하도록 지시해야 하는 경우가 있습니다. 이는 메모리에 캐시된 권한 정보를 최신 상태로 갱신하여, 변경된 권한이 실제로 적용되도록 만드는 과정입니다.
FLUSH PRIVILEGES 실행 방법
권한 테이블을 다시 로드하는 방법은 크게 두 가지입니다.
- SQL 문 실행: MySQL 클라이언트에서
FLUSH PRIVILEGES;문을 실행합니다. - mysqladmin 유틸리티 사용: 셸(Shell) 환경에서
mysqladmin flush-privileges또는mysqladmin reload명령어를 실행합니다.
세 가지 방법 모두 동일한 결과를 가져오며, 상황에 맞게 편한 방식을 선택하면 됩니다.
FLUSH PRIVILEGES가 반드시 필요한 경우
INSERT, UPDATE, DELETE 문을 사용해 mysql 데이터베이스의 권한 테이블(예: user, db 테이블)을 직접 수정하는 경우에는 FLUSH PRIVILEGES 실행이 필수적입니다. 이렇게 직접 수정한 내용은 서버를 재시작하거나 권한 테이블을 다시 로드하기 전까지는 권한 검사에 전혀 반영되지 않기 때문입니다.
FLUSH PRIVILEGES가 불필요한 경우
반면, GRANT 문을 통해 권한을 부여했다면 FLUSH PRIVILEGES를 실행할 필요가 없습니다. MySQL 서버는 GRANT 등의 SQL 문에 의한 권한 변경을 자동으로 감지하고, 권한 테이블을 즉시 메모리에 다시 로드하기 때문입니다.
결론적으로, GRANT 문을 활용한 권한 관리는 변경 사항이 자동으로 반영되지만, INSERT·UPDATE·DELETE로 권한 테이블을 직접 조작했을 때만 FLUSH PRIVILEGES를 통해 수동으로 갱신해 주어야 한다는 점을 기억하면 됩니다.