MySQL 사용자 및 권한

Yong Lee·2025년 8월 12일

1. 호스트명, 도메인 혹은 IP주소도 계정의 일부

MySQL은 특이하게 어느 IP에서 접속하고 있는지도 확인한다.

'lee_id'@'127.0.0.1'

계정을 언급할 때는 다음과 같이 항상 아이디와 호스트를 함께 명시한다.
따옴표(')는 식별자를 감싸는 역할을 한다.

만약 외부 컴퓨터에서 접속이 가능한 사용자 계정을 생성하고 싶다면?

사용자 계정의 호스트 부분을 % 문자로 대체하면 된다.
즉, % 문자는 모든 IP 또는 모든 호스트명을 의미한다.

'lee_id'@'192.168.0.1' (비번 1234)
'lee_id'@'%' (비번 5678)

이 예시를 봤을 때 192.168.0.1과 %을 모두 가지고 있는 PC가 있다고 가정하자.
그러면 lee_id라는 계정으로 로그인하려 할 때 MySQL은 어떤 것을 서택할까?

  • 범위가 더 작은 '192.168.0.1' 호스트를 선택한다.

하지만 이런 일이 생기지 않게 계정은 식별이 더 잘되게 다르게 만들자.

시스템 계정 vs 일반 계정

구분시스템 계정 (System Account)일반 계정 (General/User Account)
목적시스템 운영 및 관리, 백그라운드 작업 수행일반 사용자 서비스 이용 및 작업 수행
권한 수준매우 높은 권한, 시스템 전체 접근 가능제한된 권한, 주로 자신의 작업 영역 내에서만 권한 부여
생성 주체시스템 관리자나 OS/DB 설치 시 자동 생성관리자 또는 사용자 요청에 의해 생성
사용 주체OS, 데이터베이스, 애플리케이션 등 시스템 프로세스실제 사용자(사람)
접근 범위시스템 전반, 여러 사용자 계정 관리자신 또는 특정 리소스에 제한된 접근
예시root, administrator, mysql, postgresalice, bob, guest
보안 중요도매우 높음, 계정 탈취 시 심각한 피해 우려중요하지만 시스템 계정보다 상대적으로 낮음

계정 생성

5.7 버전에서는 GRANT 명령으로 권한의 부여와 동시에 계정 생서이 가능했다고 한다.
하지만 8.0 버전부터는 계정의 생성은 CREATE USER 명령으로, 권한 부여는 GRANT 명령으로 구분해서 실행하도록 바뀌었다.

설정할 수 있는 옵션

  • 계정의 인증 방식과 비밀번호
  • 비밀번호 관련 옵션(비번 유효기간, 비번 이력 개수, 비번 재사용 불가 기간)
  • 기본 역할
  • SSL(Secure Sockets Layer) 옵션
    • 그 사용자가 SSL 연결(암호화된 연결)을 사용해야만 접속할 수 있게 제한할 수 있어요.
    • 예시: CREATE USER 'alice'@'%' IDENTIFIED BY 'password123' REQUIRE SSL;
# 유저생성 예시
CREATE USER 'user'@'%'
IDENTIFIED WITH 'mysql_native_password' BY 'password'
REQUIRE NONE
PASSWORD EXPIRE INTERVAL 30 DAY
ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEFAULT;
profile
오늘은 어떤 새로운 것이 나를 즐겁게 할까?

0개의 댓글