MySQL 8.0부터 계정은 SYSTEM_USER 권한 유무로 시스템 계정과 일반 계정으로 구분된다.
다음과 같이 내장된 계정들이 있는데 삭제 되지 않도록 주의하자. 하지만 처음부터 잠겨 있는 상태라 보안을 걱정하지는 않아도 된다.
'mysql.sys'g'localhost'
: MySQL8.0부터 기본으로 내장된 sys 스키마의 객체(뷰나 함수, 그리고 프로시저들의 DEFINER로 사용되는 계정'mysql.session'@'localhost'
: MySQL 플러그인이 서버로 접근할 때 사용되는 계정‘mysal.infoschema’@'localhost'
: information_schema
에 정의된 뷰의 DEFINER로 사용되는 계정MySQL 8.0 기준으로 계정 생성은 CREATE USER
명령으로, 권한 부여는 GRANT
명령으로 구분해서 실행한다.
다음의 옵션들이 있다.
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
뒤에는 인증 방식을 명시해야 한다.IDENTIFIED BY ‘password’
형식으로 명시하면 된다.default_password_lifetime
시스템 변수에 저장된 기간으로 설정된다.PASSWORD EXPIRE
: 계정 생성과 동시에 만료PASSWORD EXPIRE NEVER
: 만료 기간 없음PASSWORD EXPIRE DEFAULT
: default_password_lifetime
시스템 변수에 저장된 기간PASSWORD EXPIRE INTERVAL n DAY
: n일자에 만료password_hsitory
테이블에 저장하고 관리한다.PASSWORD HISTORY DEFAULT
: password_history
변수에 저장된 개수만큼 이력 저장PASSWORD HISTORY n
: n개만큼 이력을 저장한다.PASSWORD REUSE INTERVAL DEFAULT
: 별도로 명시하지 않았을 때 적용되는 옵션, reuse_interval
변수에 지정된 기간으로 설정PASSWORD REUSE INTERVAL n DAY
: n일자 이후 재사용 가능PASSWORD REQUIRE CURRENT
: 현재 비밀번호를 먼저 입력하도록PASSWORD REQUIRE OPTIONAL
: 현재 비밀번호를 입력하지 않도록PASSWORD REQUIRE DEFAULT
: 별도로 명시하지 않을 때의 옵션으로 password_require_current
변수 값으로 설정된다.ACCOUNT LOCK
: 계정을 사용하지 못하게 잠금ACCOUNT UNLOCK
: 잠긴 계정을 다시 사용 가능 상태로 잠금 해제