Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

migumi

[MySQL] 사용자 식별과 계정 관리 본문

MySQL

[MySQL] 사용자 식별과 계정 관리

meegu 2024. 9. 12. 20:05

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_history 테이블에 저장

 

PASSWORD REUSE INTERVAL

- 한 번 사용한 비밀번호의 재사용 금지 기간 설정

- 설정하지 않으면 password_reuse_interval 시스템 변수에 저장된 기간으로 설정

 

PASSWORD REQUIRE

- 새로운 비밀번호로 변경 시 현재 비밀번호를 필요로 할지 설정

- ~CURRENT : 현재 비밀번호를 먼저 입력하도록

- ~OPTIONAL : 현재 비밀번호 입력하지 않아도 되도록

- ~DEFAULT : password_require_current 시스템 변수 값으로 설정

 

ACCOUNT LOCK / UNLOCK

- 계정 생성 시 또는 ALTER USER 명령어를 사용해 계정 정보를 변경할 때 계정을 사용하지 못하게 잠글지 여부

- 보안을 강화하고, 설정이 완료되기 전까지 계정의 사용을 차단하기 위해 등