[Real MySQL] MySQL 사용자 및 권한

Turtle·2024년 10월 28일
0

[Real MySQL] MySQL

목록 보기
1/2
post-thumbnail

✏️MySQL 설치

MySQL 서비스 시작 : NET START MySQL91
MySQL 서비스 종료 : NET STOP MySQL91

✏️사용자 및 권한

  • MySQL 사용자는 다른 DBMS와 조금 다르게 사용자의 계정뿐 아니라 사용자의 접속 지점(클라이언트가 실행된 호스트명이나 도메인 또는 IP 주소)도 계정의 일부가 된다.
  • 따라서 MySQL에서 계정을 언급할 때는 항상 아이디와 호스트를 함께 명시해야 한다.
  • 아이디와 IP주소를 감싸는 백틱(`)은 MySQL에서 식별자를 감싸는 역할을 하는데 종종 홑따옴표(/')로도 바꿔서 사용되기도 한다.

'svc_id'@'127.0.0.1' : 로컬 호스트에서 scv_id라는 이름의 아이디만 접속을 허용한다.

  • MySQL에서 주의해야 할 점은 사용자 계정 식별 과정에서 서로 동일한 아이디가 있을 때, MySQL 서버가 해당 사용자 인증을 위해 어떤 계정을 선택하느냐이다.

'svc_id'@'192.168.0.10' (단, 이 계정의 비밀번호는 123) : 192.168.0.10 IP
'svc_id'@'%' (단, 이 계정의 비밀번호는 abc) : 모든 IP 또는 모든 호스트명

  • IP 주소가 192.168.0.10인 PC에서 이 MySQL 서버에 접속할 때, MySQL 서버가 첫 번째 계정 정보를 이용해 인증을 실행할지 아니면 두 번째 계정 정보를 통해 인증을 실행할지에 따라 접속을 성공할 수도 있고 실패할 수도 있다.
  • 권한이나 계정 정보에 대해 MySQL은 범위가 좁은 것을 먼저 선택한다.
  • 즉, %가 아닌 192.168.0.10이라는 정해진 계정을 사용해 인증을 수행하게 된다는 것이다.
  • 그렇기에 만약 계정 패스워드를 abc로 입력하게 된다면 인증에 실패하게 된다.

✏️사용자 및 계정 관리

  • MySQL 서버에는 다음과 같이 내장된 계정들이 있는데, 'root'@'localhost'를 제외한 3개의 계정은 내부적으로 각기 다른 목적에서 사용되므로 삭제되지 않도록 주의해야 한다.

    • 'mysql.sys'@'localhost' : MySQL 8.0부터 기본으로 내장된 sys 스키마의 객체들의 DEFINER로 사용되는 계정

    • 'mysql.session'@'localhost' : MySQL 플러그인이 서버로 접근할 때 사용되는 계정

    • 'mysql.infoschema'@'localhost' : information_schema에 정의된 뷰의 DEFINER로 사용되는 계정

  • 위에 언급한 3개의 계정은 처음부터 잠겨 있는 상태이기 때문에 의도적으로 풀지 않는 한 악의적 용도로 사용할 수 없으므로 보안을 걱정하진 않아도 된다.

✏️계정 생성 방법

  • MySQL 8.0부터는 계정의 생성은 CREATE USER 명령으로, 권한 부여는 GRANT 명령으로 구분해서 실행하도록 바뀌었다.
  • 계정을 생성할 때는 여러가지 다양한 옵션을 설정할 수 있다.

0개의 댓글