8.0 이상의 버전부터 MySQL의 기본 인증 플러그인이 mysql_native_password에서 caching_sha2_password로 변경됨에 따라 플러그인을 변경하거나 사용자 권한 설정을 변경해주어야 한다.
기존 버전에서 사용하던
alter user root@localhost identified by password
같은 방법은 SHA2 방식의 암호화를 지원하지 않는다.
따라서 SHA2 암호화 방식으로 변환해야한다.
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'password'
위의 방식을 사용해 암호를 지정해주면 sha2 방식의 암호화가 적용되어어
MySQL 8.0 이상의 버전에서도 사용이 가능하다.
CREATE ROLE 'r1', 'r2';
GRANT SELECT ON db1.* TO 'r1';
GRANT INSERT, UPDATE, DELETE ON db1.* TO 'r2';
CREATE USER 'u1'@'localhost' IDENTIFIED BY 'u1pass';
GRANT 'r1', 'r2' TO 'u1'@'localhost';
출처 : 공식 홈페이지 레퍼런스
위의 방식을 이용해 유저에 따라서 룰을 부여하는 방식으로 GRANT를 진행할 수있다.
MySQL 8.0부터는 사용자 추가시에 GRANT를 하면 에러가 발생한다.
그렇기 때문에 USER을 생성하고 ROLE을 만들어 그 ROLE에 권한을 부여하고
유저에 또 그 ROLE을 부여하는 방식으로 권한 부여가 가능하다.
또한 유저에게 ROLE을 여러개 부여할 수 도 있다.