Mysql 의 보안을 위해서라도 사용자마다 최소한의 권한을 부여하는것은 중요하다.
이에 권한을 부여하는 해보도록 하자.
우선 간단한데 test 라는 유저를 만들겠다.
create user 'test'@'%' identified by 'password' ;
테이블 권한부여
데이터베이스나 칼럼에 대해서는 select, insert, update, delete 을 부여 할 수 있다.
# select , insert , update , delete 권한을 모든 데이터베이스와 테이블에 부여
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'TEST'@'%' ;
# select 권한만 employee 데이터베이스의 모든 테이블에 부여
GRNAT SELECT ON employee.* TO 'TEST'@'%' ;
# select 권한만 employee 데이터베이스의 name 테이블에 부여
GRANT SELECT ON employee.name TO 'TEST'@'%' ;
모든 권한부여
grant all privileges on *.* to 'test'@'%' ;
권한회수
revoke all on *.* from 'test'@'%' ;
꼭 권한을 부여하거나 변경한 이후에는 flush privileges 을 해줘야 한다!
역할
mysql 8.0 부터 권한을 묶어서 역할을 사용할 수 있게 되었다.
역할생성
create role role_read , role_write ;
우선 빈 권한이 있는 role을 생성한 이후 권한을 부여하는 방식이다.
역할에 권한 부여
GRANT SELECT ON *.* TO role_read ;
GRANT INSERT,UPDATE,DELETE ON *.* TO role_write ;
권한을 생성했으면 이제 유저에게 부여하면된다.
특정 유저에게 역할 부여
GRANT role_read TO 'test'@'%' ;
GRANT role_write TO 'test'@'%' ;
** 이렇게 권한을 부여 하여도 권한이 없다고 오류가 뜰 수가 있다. 이때는 해당 역할을 활성화시켜줘야 한다.
SET ROLE 'role_read' ;
SET ROLE 'role_write' ;
또는 시스템 변수로 설정하면된다.
SET GLOBAL activate_all_roles_on_login=ON ;
'SQL' 카테고리의 다른 글
MySQL_ InnoDB 버퍼 풀 (0) | 2023.10.18 |
---|---|
MYSQL_ Thread, 쿼리 실행 구조 (0) | 2023.10.18 |
MYSQL_ 사용자 생성 설정 (0) | 2023.10.17 |
프로그래머스_Lv3_헤비 유저가 소유한 장소 (0) | 2023.09.19 |
WINDOW FUCTION (MySQL) (0) | 2023.08.29 |