사용자 식별
'id_name'@'127.0.0.1' (IP 주소)
'id_name'@'%' (모든 주소)
시스템 계정과 일반 계정
시스템 계정은 다음 작업이 가능하다.
계정 관리 (새로운 계정 생성, 기존 계정 삭제, 권한 부여 및 제거)
세션 강제 종료 혹은 세션에서 수행되는 쿼리 강제 종료
스토어드 프로그램 생성 시 DEFINER를 타 사용자로 설정
잠겨있는 시스템 계정 (ACCOUNTLOCKED=Y)
다음 계정들은 시스템 계정으로 로그인이 불가능한 기본 계정이다.
'mysql.sys'@'localhost' : 기본으로 내장된 sys 스키마의 객체들의 DEFINER로 사용되는 계정
'mysql.session'@'localost' : MySQL 플러그인이 서버로 접근할 때 사용하는 계정
'mysql.infoschema'@'localhost' : information_schema에 정의된 뷰의 DEFINIER
계정 생성 CREATE USER
ex)
CREATE USER 'user'@'%'
IDENTIFIED WITH 'mysql_native_password' BY 'password'
REQUIRE NONE
PASSWORD EXPIRE INTERVAL 30 DAY
ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEFAULT;
- IDENTIFIED WITH : 사용자 인증 방식과 패스워드 설정
- REQUIRE : 암호화된 SSL/TLS 채널 사용 여부
- PASSWORD EXPIRE : 비밀번호의 유효 기간 설정
- ACCOUNT UNLOCK : 계정 잠금 설정
- PASSWORD HISTORY : 계정 재설정시 이력에 있는 비밀번호를 재사용할 수 있게끔 할 것인지
- PASSWORD REUSE INTERVAL : 비밀 번호 재사용 금지 기간
- PASSWORD REQUIRE : 재설정할 때 현재 비밀번호를 필요로 할 것인지
권한 Privilege
객체 권한 GRANT 명령으로 권한을 부여할 때 특정 객체를 명시해야한다.
GRANT privilege_list ON db.table TO 'user'@'host';
역할 Role
권한을 묶어서 역할로 관리할 수 있다.
두 역할을 만든다.
CREATE ROLE role_emp_read, role_emp_write;
두 역할에 권한을 부여한다.
GRANT SELECT ON employees.* TO role_emp_read;
GRANT INSERT, UPDATE, DELETE ON employees.* TO role_emp_write;
새로운 사용자들을 만든다.
CREATE USER reader@'127.0.0.1' IDENTIFIED BY 'qwerty';
CREATE USER writer@'127.0.0.1' IDENTIFIED BY 'qwerty';
사용자에 권한을 부여한다.
GRANT role_emp_read TO reader@'127.0.0.1';
GRANT role_emp_write TO writer@'127.0.0.1';
'DB > MySQL' 카테고리의 다른 글
MySQL 인덱스 (0) | 2022.01.09 |
---|---|
MySQL 트랜잭션과 잠금 (0) | 2022.01.02 |
MySQL InnoDB 스토리지 엔진 아키텍처 (0) | 2021.12.30 |
MySQL 아키텍쳐 (0) | 2021.12.29 |
MySQL 시스템 변수 (0) | 2021.12.20 |