DB/MySQL

MySQL 사용자 및 권한

로파이 2021. 12. 23. 21:35

사용자 식별

'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