Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

migumi

[MySQL] 사용자-비밀번호 관리 본문

MySQL

[MySQL] 사용자-비밀번호 관리

meegu 2024. 9. 21. 17:54

1. 고수준 비밀번호

validate_password 컴포넌트 : 

 - 앞에서 살펴본 유효기간이나 이력관리를 통한 재사용 금지 기능뿐만 아니라 MySQL 서버에서 글자의 조합을 강제하거나 금칙어를 설정하는 등의 유효성 체크 규칙을 적용할 수 있게 하는 컴포넌트

INSTALL COMPONENT 'file://component_validate_password';

 

 

컴포넌트가 설치되면 아래와 같이 컴포넌트에서 제공하는 시스템 변수를 확인할 수 있다.

(사실 MySQL 8.0 이상에서는 validate_password가 기본적으로 포함되어 있어, 사용자가 별도로 설치할 필요가 없다고 함)

SHOW GLOBAL VARIABLES LIKE 'validate_password%';

 

1-1. 시스템 변수

validate_password.policy : 비밀번호 정책

- LOW : 비밀번호 길이만 검증

- MEDIUM : 비밀번호 길이, 숫자, 대소문자, 특수문자의 배합 검증

- STRONG : MEDIUM 레벨 검증 + 금칙어 여부 확인

 

validate_password.length:  비밀번호의 최소 길이 설정

validate_password.mixed_case_count: 대문자와 소문자가 혼합되어야 하는 최소 개수 설정 (0이면 medium정책에서도 소문자만 있거나 대문자만 있어도 됨)

validate_password.number_count: 비밀번호에 포함되어야 하는 최소 숫자 개수 설정

validate_password.special_char_count: 비밀번호에 포함되어야 하는 최소 특수문자 개수 설정

 

validate_password.dictionary_file: 비밀번호 검증 시 사용할 사전 파일을 지정 / 해당 파일에 명시된 단어를 포함하는지 여부를 검증(금칙어)

 

1-2. 금칙어 설정

 https://migudat.tistory.com/10 여기서 사전 파일 만들었고

 

MySQL에 사전 파일 경로 설정하고 정책 변경

SET GLOBAL validate_password.dictionary_file = '/var/lib/mysql/dictionary.txt';
SET GLOBAL validate_password.policy ='STRONG';

 

확인해보면 제대로 적용 되었음을 볼 수 있다.

 

 

2. 이중 비밀번호

이중 비밀번호 (Dual Password): 비밀번호 2개의 값을 동시에 사용, 2개의 비밀번호 중 하나만 일치하면 로그인 가능

프라이머리(Primary) : 최근에 설정된 비밀번호

세컨더리(Secondary) : 이전 비밀번호

 

1) 'root' 계정 비밀번호를 하기와 같이 변경

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysqlserver123!';

 

2) 첫번째 입력한 비밀번호( 'Mysqlserver123!' )를 유지한 채 새 비밀번호('new_password')를 프라이머리 비밀번호로 설정

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password' RETAIN CURRENT PASSWORD;

 

 

종료 후 다시 로그인 해보면 설정한 두 비밀번호로 모두 로그인 가능함을 볼 수 있다.

 

3) 세컨더리 비밀번호는 아래와 같은 명령어로 삭제할 수 있음

ALTER USER 'root'@'localhost' DISCARD OLD PASSWORD;