MySQL에서 사용자 계정 관련 쿼리를 수행하고 뭔가 뜻대로 반영이 잘 안 되는 거 같으면 무지성으로 FLUSH PRIVILEGES 를 날려보는 경향이 있습니다. 그치만 FLUSH PRIVILEGES가 무엇인지 정확히 알면 쓸 일이 거의 없다는 걸 알게 됩니다.
FLUSH PRIVILEGES 는 mysql에서 사용자 계정, 권한에 변경 사항이 생겼을 때 기존의 캐시를 리프레쉬하고 새로운 변경사항을 즉시 반영하는 명령입니다.
즉 사용자를 추가하거나, 사용자에 권한을 부여한 뒤에 필요한 것입니다. FLUSH PRIVILEGES를 뭉뚱그려서 ‘mysql에서 무언가 설정이 바뀌면 반영해주는 명령어 아닌가?’ 정도로 이해하면 아무 관련이 없는 상황에도 의미 없이 FLUSH PRIVILEGES를 날리게 됩니다.
결론부터 말하면 현 시점에서 FLUSH PRIVILEGES는 그냥 안 써도 된다고 생각해도 별 무리가 없을 거 같습니다.
왜냐하면 create user, drop user, grant, revoke 같은 명령어는 수행 즉시 자동으로 FLUSH PRIVILEGES를 수행하고 내용을 즉시 반영하기 때문입니다. 따로 해줄 게 없습니다.
create user 'user1'@'127.0.0.1' identified by 'user1';
grant all on *.* to 'user1'@'127.0.0.1'
처럼 말입니다.
한편 FLUSH PRIVILEGES를 직접 수행해야 하는 경우는 mysql.user 테이블을 직접 update, insert 등으로 수정했을 때 입니다. 사용자와 권한에 대한 내용은 mysql.user 테이블에 저장됩니다. 즉 이 테이블을 직접 수정할 수도 있다는 의미입니다. 이런 경우엔 FLUSH PRIVILEGES를 해줘야 변경 사항이 반영됩니다.
하지만 대부분의 사용자, 권한 명령은 mysql.user 테이블을 직접 변경하지 않고 create user, grant 같은 구문을 사용하기 때문에 FLUSH PRIVILEGES를 쓸 일은 별로 없습니다.