migumi
[MySQL] 사용자 식별과 계정 관리 본문
1. 사용자 식별
MySQL 에서는 '아이디'@'호스트' 가 계정이 됨
'svc_id'@'127.0.0.1' # ← 현재 서버 기동 중인 로컬 호스트에서 접속시에만 사용 가능
'svc_id'@'%' # 모든 외부 컴퓨터에서 접속 가능 "%"문자가 모든 IP/호스트명을 의미
권한이나 계정 정보에 대해 MySQL은 정보 범위가 더 좁은 것을 선택
→ 위처럼 동일한 아이디 @ % or IP 일 경우 %가 포함되지 않은 계정 정보를 이용해 사용자 인증
2. 사용자 계정 관리
2-1. 시스템 계정과 일반 계정
시스템 계정(System Account)
: 일반 계정과 같이 사용자를 위한 계정이지만 주로 데이터베이스 서버 관리자를 위한 계정이다.
아래와 같은 데이터베이스 서버 관리와 관련한 중요 작업은 시스템 계정으로만 가능하다
- 계정 관리 (계정 생성 및 삭제, 권한 부여 및 제거)
- 다른 세션 또는 해당 세션에서 실행 중인 쿼리 강제 종료
- 스토어드 프로그램(프로시저, 함수, 트리거, 이벤트) 생성시 Definer를 타 사용자로 설정
* 스토어드 프로그램 DEFINER를 타 사용자로 설정하면 지정된 사용자의 권한으로 프로그램 실행 가능
위 이미지의 3개 계정은 기본적으로 내장된 sys 스키마 객체들의 definer로 사용되거나, mysql 플러그인이 서버로 접근할 때 사용되거나, information_schema에 정의된 뷰의 definer로 사용되는 계정으로 삭제되지 않게 주의 >> 어차피 locked = Y 상태이긴 함
2-2. 계정 생성
MySQL8.0 부터 계정 생성은 CREATE USER 명령으로, 권한 부여는 GRANT 명령으로 구분해서 실행
IDENTIFIED WITH :
- 인증 방식과 비밀번호 설정
- 'IDENTIFIED WITH ' caching_sha2_password ' BY 'password' 라고 입력해도 8.0에서 사용되는 기본 인증 플러그인을 사용할 수 있음
- caching_sha2_password 를 사용하게 되면 5.7과 달리 SSL/TLS를 필요로 하기 때문에 기존과 다른 연결 방식으로 연결해야 함 따라서 기존 버전과의 호환성이 중요하다면 SET GLOBAL default_authentication_plugin="mysql_native_password"를 통해 MySQL 설정을 변경하는 것도 방법
REQUIRE
- MySQL 서버에 접속할 때 암호화된 채널을 사용할 지 여부 설정 (SSL/TLS : 암호화 프로토콜)
- ssl로 해당 옵션을 설정하지 않아도 ' caching_sha2_password ' 인증 방식을 사용하면 암호화된 채널만으로 서버에 접속 가능
PASSWORD EXPIRE
- 비밀번호 유효기간 설정
º PASSWORD EXPIRE : 계정 생성과 동시에 비밀번호 만료 처리
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
로그인해서 사용하려면 새 비밀번호를 설정해야 함
º PASSWORD EXPIRE NEVER : 계정 비밀번호 만료기간 없음
º PASSWORD EXPIRE DEFAULT : 시스템 변수에 저장된 기간으로 유효기간 설정 (default_password_lifetime)
º PASSWORD EXPIRE INTERVAL n DAY : 비밀번호의 유효기간을 오늘부터 n일자로 설정
PASSWORD HISTORY
- 한 번 사용했던 비밀번호를 재사용하지 못하게 함
- ~DEFAULT : password_history 시스템 변수에 저장된 개수만큼 비밀번호 이력을 저장하고 그 이력에 남아있는 비밀번호는 재사용불가
- ~n : 비밀번호 이력을 최근 n개 까지 저장하고 그 이력에 남은 비밀번호는 재사용 불가
- 따로 설정하지 않으면, 비밀번호 재사용 가능
PASSWORD REUSE INTERVAL
- 한 번 사용한 비밀번호의 재사용 금지 기간 설정
- 설정하지 않으면 password_reuse_interval 시스템 변수에 저장된 기간으로 설정
PASSWORD REQUIRE
- 새로운 비밀번호로 변경 시 현재 비밀번호를 필요로 할지 설정
- ~CURRENT : 현재 비밀번호를 먼저 입력하도록
- ~OPTIONAL : 현재 비밀번호 입력하지 않아도 되도록
- ~DEFAULT : password_require_current 시스템 변수 값으로 설정
ACCOUNT LOCK / UNLOCK
- 계정 생성 시 또는 ALTER USER 명령어를 사용해 계정 정보를 변경할 때 계정을 사용하지 못하게 잠글지 여부
- 보안을 강화하고, 설정이 완료되기 전까지 계정의 사용을 차단하기 위해 등
'MySQL' 카테고리의 다른 글
[MySQL] 사용자- 권한(Privilege)과 역할(Role) (0) | 2024.09.21 |
---|---|
[MySQL] 사용자-비밀번호 관리 (0) | 2024.09.21 |
[MySQL] MySQL 서버 설정과 시스템 변수 (1) | 2024.09.11 |
[MySQL] MySQL 서버 업그레이드 (교체식 - Minor / Major) (3) | 2024.09.05 |
[MySQL] yum으로 MySQL 설치 (CentOS 9) (1) | 2024.09.04 |