1. 시스템 계정과 일반 계정
•
MySQL 8.0부터 계정은 SYSTEM_USER 권한을 갖고 있느냐에 따라 시스템 계정과 일반 계정으로 구분한다.
•
시스템 계정은 MySQL 서버 내부적으로 실행되는 백그라운드 스레드와는 무관하며 시스템 계정은 데이터베이스 서버 관리자를 위한 계정, 일반 계정은 응용 프로그램이나 개발자를 위한 계정 정도로 생각하면 된다.
•
시스템 계정은 시스템 계정과 일반 계정을 관리할 수 있지만 일반 계정은 시스템 계정을 관리할 수 없으며 다음과 같은 중요한 작업은 시스템 계정으로만 수행 가능
◦
계정 관리(계정 생성 및 삭제, 그리고 계정의 권한 부여 및 제거)
◦
다른 세션 또는 그 세션에서 실행 중인 쿼리를 강제 종료
◦
스토어드 프로그램 생성 시 DEFINER를 타 사용자로 설정
•
이런 시스템 계정의 개념이 도입된 것은 DBA 계정에는 SYSTEM_USER 권한을 할당하고 일반 사용자를 위한 계정에는 권한을 할당하지 않기 위함이다.
2. 계정 생성
•
MySQL 버전 8.0부터는 계정의 생성은 CREATE USER 명령으로 권한 부여는 GRANT 명령으로 구분하여 실행하도록 바뀌었다. 계정을 생성할 때는 다음과 같은 옵션을 설정 가능
◦
계정의 인증 방식과 비밀번호
◦
비밀번호 관련 옵션(비밀번호 유효 기간, 비밀번호 이력 개수, 비밀번호 재사용 불가 기간)
◦
기본 역할(Role)
◦
SSL 옵션
◦
계정 잠금 여부
•
일반적으로 많이 사용되는 옵션을 가진 CREATE USER 명령은 다음과 같다.
CREATE USER 'user'@'%'
IDENTIFIED WITH 'mysql_native_password' BY 'password'
REQUIRE NONE
PASSWORD EXPRIE INTERVAL 30 DAY
ACCOUNT UNLOCK
PASSOWRD HISTORY DEFAULT
PASSOWRD REUSE INTERVAL DEFAULT
PASSOWRD REQUIRE CURRENT DEFAULT;
SQL
복사
1.
IDENTIFIED WITH
: 사용자의 인증 방식과 비밀 번호를 설정, 반드시 인증 방식을 명시해야 하는데, 기본 인증 방식을 사용할 경우 IDENTIFIED BY ‘password’ 형식으로 명시
: MySQL 서버에서는 다양한 인증 방식을 플러그인 형태로 제공하며 다음 4가지 방식이 대표적
•
Native Pluggable AUthentifaction
•
Caching SHA-2 Pluggable Authentication
•
PAM Pluggable Authentication
•
LDAP Pluggalbe Authentication
2.
REQUIRE
: MySQL 서버에 접속할 때 암호화된 SSL/TLS 채널을 사용할지 여부를 설정, 설정하지 않을 경우 비암호화 채널로 연결
3.
PASSWORD EXPIRE
: 비밀번호의 유효 기간을 설정하는 옵션으로 별도로 명시하지 않으면 default_password_lifetime 시스템 변수에 저장된 기간으로 유효 기간 설정
•
PASSWORD EXPIRE: 계정 생성과 동시에 비밀번호의 만료 처리
•
PASSWORD EXPIRE NEVER: 계정 비밀번호의 만료 기간 없음
•
PASSWORD EXPIRE DEFAULT: default_password_lifetime 시스템 변수에 저장된 기간으로 유효 기간을 설정
•
PASSWORD EXPIRE INTERVAL n DAY: 비밀번호 유효 기간을 오늘부터 n일자로 설정
4.
PASSWORD HISTORY
: 한 번 사용했던 비밀번호 재사용 불가
•
PASSWORD HISTORY DEFAULT: password_history 시스템 변수에 저장된 개수만큼 이력을 저장
•
PASSWORD HISTORY n: 비밀번호의 이력을 최근 n개까지만 저장하며 저장된 이력에 남아있는 비밀번호는 사용 불가
5.
PASSWORD REUSE INTERVAL
: 한번 사용했던 비밀번호의 재사용 금지 기간을 설정하는 옵션, 별도로 명시하지 않으면 시스템 변수에 저장된 기간으로 설정
•
PASSWORD REUSE INTERVAL DEFAULT: password_reuse_interval 변수에 기간으로 설정
•
PASSWORD REUSE INTERVAL n: n일자 이후에 비밀번호를 재사용할 수 있게 설정
6.
PASSWORD REQUIRE
: 비밀번호가 만료되어 새로운 비밀번호로 변경할 때 현재 비밀번호를 필요로 할지 말지 결정하는 옵션
•
PASSWORD REQUIRE CURRENT: 비밀번호를 변경할 때 현재 비밀번호를 입력하도록 설정
•
PASSWORD REQUIRE OPTIONAL: 비밀번호를 변경할 때 현재 비밀번호를 입력하지 않아도 되도록 설정
•
PASSWORD REQUIRE DEFAULTR: password_rquire_current 시스템 변수의 값으로 설정
7.
ACCOUNT LOCK / UNLOCK
: 계정 생성 시 ALTER USER 명령을 사용해 계정 정보를 변경할 때 계정을 사용하지 못하게 잠글지 여부를 결정
•
ACCOUNT LOCK: 계정을 사용하지 못하게 잠금
•
ACCOUNT UNLOKC: 잠긴 계정을 다시 사용 가능 상태로 잠금 해제