개발 일기

MYSQL 역할(Role) 본문

DB/mysql

MYSQL 역할(Role)

이건욱

Mysql 역할은 아래와 같이 사용 예시를 통해서 간단하게 알수있습니다.

mysql> CREATE ROLE role_one, role_two;

먼저 다음과 같이 빈 껍데기만 있는 역할을 두개를 정의 했습니다.

 

이제 GRANT 명령으로 실질적인 권한을 부여할수가 있습니다. 아래와 같이 권한을 부여하는 예시입니다.

GRANT SELECT ON hotel.* TO role_one;
GRANT INSERT, UPDATE, DELETE ON hotel.* TO role_two

첫번째 role_one 역할에는 hotel이라는 DB에 모든 객체에 대해 읽기 권한을 부여했습니다.

두번째 role_two 역할에는 hotel이라는 DB에 모든 객체에 대해 변경 권한을 부여했습니다.

 

이제 이 역할을 사용을 할려면 먼저 CREATE USER 명령으로 유저를 생성해야합니다.

CREATE USER reader@'127.0.0.1' IDENTIFIED BY 'password';
CREATE USER writer@'127.0.0.1' IDENTIFIED BY 'password';

두명의 유저를 생성하였습니다.

이제 이 유저들에게 역할을 부여하도록 하겠습니다.

GRANT role_one TO reader@'127.0.0.1';
GRANT role_one, role_two TO writer@'127.0.0.1';

이제 해당 계정에 역할을 활성화 시켜주셔야합니다.

set role 'role_one' , 'role_two';

따라서 위와 같이 활성화를 시켜준다음 아래와 같이 확인해 볼수가 있습니다.

select current_role();

하지만 계정이 로그아웃했다가 다시 로그인 했을 경우에는 역할이 활성화되어있지 않는 상태를 볼수 있을겁니다.

 

아래와 같이 역할을 자동으로 활성화 해주는 시스템 변수를 설정을 해야합니다.

set global activate_all_roles_on_login=ON;

'DB > mysql' 카테고리의 다른 글

TRUNCATE + FOREIGN KEY  (0) 2020.05.18
Union ?  (0) 2020.05.02
GROUP BY ?  (0) 2020.05.01
MYSQL JOIN ?  (0) 2020.04.30
CREATE View?  (0) 2020.04.29
Comments