MariaDB

MySQL 계열의 FLUSH PRIVILEGES 명령어

열린기술자·2016년 1월 11일·조회 50,131

MySQL이나 MariaDB를 사용하다 보면 FLUSH PRIVILEGES라는 명령어를 자주 사용하게 된다. 대체 무슨 의미일까.

보통은 INSERT, DELETE, UPDATE를 통해 사용자를 추가, 삭제, 권한 변경 등을 수행하였을 때 이 변경 사항을 반영하기 위하여 사용한다. 이때 FLUSH PRIVILEGES는 grant 테이블을 reload함으로써 변경 사항을 즉시 반영하도록 한다.

UPDATE USER SET PASSWORD=password('새로운패스워드') WHERE USER='사용자명';
FLUSH PRIVILEGES;
DELETE FROM USER WHERE USER='사용자명';
FLUSH PRIVILEGES;

그런데 만약 INSERT, DELETE, UPDATE와 같은 SQL문을 사용하지 않고 바로 grant 명령어를 사용하여 작업하였다면 FLUSH PRIVILEGES를 실행할 필요가 없어진다.

또한 MySQL/MariaDB 상이 아닌 OS 커맨드 상에서도 flush를 할 수 있다.

$ mysqladmin reload
$ mysqladmin flush-privileges

패스워드가 설정된 경우는 인증을 해야 한다.

$ mysqladmin -u root -p reload
Enter password:

그런데 이 FLUSH PRIVILEGES는 굉장히 성능에 영향을 준다. 특히 습관적으로 FLUSH PRIVILEGES를 사용하는 경우가 있는데(모든 명령 이후에 사용하는 경우도 있다) 이는 엄청난 부하가 된다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.