MySQL 8.0 이상 사용자 계정 설정

버버니야·2022년 5월 12일
0

MySQL은 8.0 이상부터는 보안 정책의 강화로 외부 접속 설정이 복잡해졌다.

8.0 이상의 버전부터 MySQL의 기본 인증 플러그인이 mysql_native_password에서 caching_sha2_password로 변경됨에 따라 플러그인을 변경하거나 사용자 권한 설정을 변경해주어야 한다.

1. 유저 권한 설정시 암호화 방식으로 암호 만들기

기존 버전에서 사용하던

alter user root@localhost identified by password

같은 방법은 SHA2 방식의 암호화를 지원하지 않는다.

따라서 SHA2 암호화 방식으로 변환해야한다.

sha2
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'password'

위의 방식을 사용해 암호를 지정해주면 sha2 방식의 암호화가 적용되어어
MySQL 8.0 이상의 버전에서도 사용이 가능하다.

2. USER 와 ROLE 을 분리하는 방법

USER와 ROLE을 분리해서 유저마다 각기다른 ROLE을 부여하는 방식이 있다.

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을 여러개 부여할 수 도 있다.

참고 블로그
1. 참고블로그 1
2. 참고블로그 2

profile
안녕하세요

0개의 댓글