Search
Duplicate
2️⃣

사용자 계정 관리

1. 시스템 계정과 일반 계정

: MySQL 8.0부터 계정은 SYSTEM_USER 권한을 갖고 있느냐에 따라 시스템 계정과 일반 계정으로 구분
: 시스템 계정은 MySQL 서버 내부적으로 실행되는 백그라운드 스레드와는 무관, 시스템 계정은 데이터베이스 서버 관리자를 위한 계정, 일반 계정은 응용 프로그램이나
개발자를 위한 계정 정도로 생각
: 시스템 계정은 시스템 계정과 일반 계정을 관리할 수 있지만 일반 계정은 시스템 계정을 관리할 수 없으며 다음과 같은 중요한 작업은 시스템 계정으로만 수행 가능
계정 관리(계정 생성 및 삭제, 그리고 계정의 권한 부여 및 제거)
다른 세션 또는 그 세션에서 실행 중인 쿼리를 강제 종료
스토어드 프로그램 생성 시 DEFINER를 타 사용자로 설정
: 이런 시스템 계정의 개념이 도입된 것은 DBA 계정에는 SYSTEM_USER 권한을 할당하고 일반 사용자를 위한 계정에는 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;
JSON
복사
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: 잠긴 계정을 다시 사용 가능 상태로 잠금 해제