본문 바로가기

DataBase

[DataBase] 사용자

728x90

사용자 식별

MySQL 에서 사용자의 계정은 사용자가 설정한 아이디 + 사용자의 접속지점(호스트명이나 ip 주소)입니다.

따라서 'user'@'127.0.0.1' 의 계정은 로컬에서 user라는 아이디로 접속할 때만 사용할 수 있습니다.

 

만일 접속지점과 관계없이 계정을 생성하고 싶다면 'user'@'%' 으로 사용할 수 있습니다.

 

만일 동일한 아이디가 있을 때 MySQL 서버가 어떤 계정을 선택할까요?

  1. 'user'@'192.168.0.10' (password : 123)
  2. 'user'@'%' (password : abc)

이런 경우에는 범위가 가장 작은것을 선택하게 됩니다. 

즉, 1번을 선택할 것이고 abc 로 로그인을 시도하게된다면 로그인 실패로 이어질 것입니다.

 

시스템 계정과 일반 계정

시스템 계정은 데이터베이스 서버 관리자를 위한 계정이고, 일반 계정은 응용 프로그램 개발자를 위한 계정입니다.

 

시스템 계정은 일반 계정과 시스템 계정을 관리할 수 있고, 다른 세션 또는 해당 세션에서 실행 중인 쿼리를 강제종료 시킬 수도 있습니다. 또한 스토어드 프로그램 생성 시 DEFINER를 타 사용자로 설정할 수 있습니다.

 

일반 계정은 시스템 계정을 관리할 수 없습니다.

 

계정 생성

계정 생성은 CREATE  USER 명령으로, 권한 부여는 GRANT 명령으로 실행 할 수 있습니다.

계정을 생성할 시에는 다음과 같은 옵션을 설정할 수 있습니다.

  1. 계정의 인증방식과 비밀번호
  2. MySQL 서버에 접속할 때 암호화된 SSL/TLS 채널을 사용할지 여부
  3. 비밀번호 관련 옵션 (비밀번호 유효기간, 비밀번호 이력 개수, 비밀번호 재사용 불가 기간)
  4. 기본 역할
  5. 계정 잠금 여부

 

비밀번호 관리

MySQL 서버의 비밀번호는 쉽게 유추할 수 있는 단어들이 사용되지않게 글자의 조합을 강제하거나 금칙어를 설정하는 기능이 있습니다. 이는 validate_password 컴포넌트를 이용하면 되는데 LOW, MEDIUM, STRONG 과같이 3가지 중 하나로 설정할 수 있습니다.

 

 

이중 비밀번호

데이터베이스 계정의 비밀번호는 서비스가 실행 중인 상태에서 변경하기 어렵습니다. 그래서 처음 설정한 그대로 몇년동안 사용하는 경우가 많은데, 보안상 비밀번호는 자주 바뀌어야하므로 이중 비밀번호 라는것을 사용합니다.

 

여기서 이중 비밀번호란 2개의 비밀번호를 모두 맞게 입력했을때 통과되는것이 아니라, 2개 중 하나만 일치하면 통과되는것을 의미합니다.

 

2개의 비밀번호는 Primary와 Secondary로 구분됩니다. 

Primary는 가장 최근에 설정된 비밀번호 입니다.

Secondary는 Primary 였던 이전 비밀번호가 됩니다.

 

처음 비밀번호가 설정되면 Primary로 설정되고, Secondary는 비어있습니다.

여기서 비밀번호가 변경이된다면 기존에 Primary로 설정됬던 비밀번호는 Secondary로 방금 변경한 비밀번호는 Primary가 됩니다.

 

위와같은 방식으로 비밀번호를 변경하는데 MySQL 서버가 재시작을 하게되면 Secondary 비밀번호는 삭제하는것이 보안상 좋습니다.

 


● 참고자료 : Real MySQL 8.0 (백은빈, 이성욱 | 위키북스)

728x90

'DataBase' 카테고리의 다른 글

[DataBase] DBCP  (0) 2024.04.11
[DataBase] DBMS 기본 용어  (0) 2023.08.02
[DataBase] MySQL vs Oracle  (0) 2023.07.28
[DataBase] MySQL 시스템 변수  (0) 2023.07.18
[DataBase] Select 쿼리 실행순서  (0) 2023.07.06