DB

[MySQL] ALTER USER 완벽 가이드 사용법(사용자 계정 변경)

인생아 2025. 4. 1. 14:12
반응형

MySQL에서 사용자 계정을 변경하려면 ALTER USER 명령어를 사용한다.
이 명령어는 사용자의 비밀번호 변경, 계정 잠금 및 해제, 인증 플러그인 변경 등 다양한 작업을 수행할 수 있다.

1. ALTER USER 명령어란?

ALTER USER 명령어는 기존의 MySQL 사용자 계정을 변경하는 데 사용된다.
이 명령어를 사용하면 다음과 같은 작업이 가능하다.

  • 비밀번호 변경
  • 계정 잠금 및 해제
  • 비밀번호 만료 설정
  • 비밀번호 정책 적용
  • 인증 플러그인 변경
  • 리소스 제한 설정

기본 구문

ALTER USER '사용자명'@'호스트' [IDENTIFIED BY '새로운비밀번호'] [옵션];
  • '사용자명'@'호스트' : 변경할 대상 사용자 계정
  • IDENTIFIED BY '새로운비밀번호' : 사용자의 비밀번호 변경
  • 옵션 : 계정 잠금, 비밀번호 정책 적용 등의 추가 설정 가능
반응형

2. ALTER USER로 비밀번호 변경하기

MySQL에서 가장 많이 사용하는 기능 중 하나는 사용자의 비밀번호 변경이다.

예제 1: 사용자 비밀번호 변경

ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'NewPassword123!';

위 명령어를 실행하면 testuser@localhost 사용자의 비밀번호가 NewPassword123! 로 변경된다.
비밀번호를 변경한 후에는 반드시 FLUSH PRIVILEGES 명령어를 실행할 필요가 없다.

예제 2: 모든 호스트에서 접근하는 사용자 비밀번호 변경

ALTER USER 'remoteuser'@'%' IDENTIFIED BY 'SecurePass456!';

'%' 는 모든 호스트에서 접속 가능한 사용자를 의미한다.
따라서 위 명령어를 실행하면 원격에서 접속하는 remoteuser 계정의 비밀번호가 변경된다.

3. 사용자 계정 잠금 및 해제

특정 사용자의 접근을 차단하려면 ACCOUNT LOCK 옵션을 사용하여 계정을 잠글 수 있다.

예제 3: 사용자 계정 잠금

ALTER USER 'testuser'@'localhost' ACCOUNT LOCK;

이 명령어를 실행하면 testuser 계정이 잠기며, 더 이상 로그인할 수 없게 된다.
사용자 계정이 잠긴 상태에서 로그인하면 다음과 같은 오류가 발생한다.

ERROR 3118 (HY000): Access denied for user 'testuser'@'localhost'. Account is locked.

예제 4: 사용자 계정 잠금 해제

ALTER USER 'testuser'@'localhost' ACCOUNT UNLOCK;

이 명령어를 실행하면 testuser 계정이 다시 활성화되며, 정상적으로 로그인할 수 있게 된다.

반응형

4. 비밀번호 만료 설정 및 관리

MySQL에서는 보안을 위해 사용자의 비밀번호를 일정 기간마다 변경하도록 비밀번호 만료 설정이 가능하다.

예제 5: 비밀번호 즉시 만료 처리

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE;

이 명령어를 실행하면 testuser 사용자는 다음 로그인 시 반드시 새 비밀번호를 설정해야 한다.
만약 비밀번호를 변경하지 않으면 로그인할 수 없다.

예제 6: 비밀번호 만료 기간 설정

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

이 명령어는 testuser 계정의 비밀번호를 90일 후 자동으로 만료되도록 설정한다.

5. 인증 플러그인 변경

MySQL에서는 사용자 인증 방식을 변경할 수도 있다.

예제 7: 사용자 인증 플러그인 변경

ALTER USER 'testuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword123!';

위 명령어는 testuser 계정의 인증 방식을 mysql_native_password 로 변경한다.

만약 MySQL 8.0에서 caching_sha2_password 인증 방식을 사용해야 한다면 다음과 같이 설정할 수 있다.

ALTER USER 'testuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'NewSecurePass!';

이 방식은 MySQL 8.0에서 기본적으로 사용되며, 보안이 더 강화된 인증 방식이다.

반응형

6. 리소스 제한 설정

MySQL에서는 특정 사용자가 사용할 수 있는 쿼리 개수, 연결 시간, CPU 사용량 등을 제한할 수 있다.

예제 8: 사용자별 리소스 제한 설정

ALTER USER 'testuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 1000 MAX_CONNECTIONS_PER_HOUR 500;
  • MAX_QUERIES_PER_HOUR 1000 : 한 시간에 최대 1000개의 쿼리 실행 가능
  • MAX_CONNECTIONS_PER_HOUR 500 : 한 시간에 최대 500번 연결 가능

7. ALTER USER 사용 시 주의할 점

1. ALTER USER는 기존 계정에만 적용 가능

  • 존재하지 않는 사용자에게 ALTER USER 명령어를 실행하면 오류가 발생한다.
  • 만약 사용자가 존재하는지 먼저 확인하려면 다음 명령어를 사용할 수 있다.
SELECT User, Host FROM mysql.user WHERE User = 'testuser';

2. 비밀번호 변경 시 강력한 보안 정책 사용

  • 비밀번호는 영문 대소문자, 숫자, 특수문자 조합을 사용하여 보안을 강화해야 한다.
  • MySQL 8.0에서는 기본적으로 caching_sha2_password 방식이 권장된다.

3. 비밀번호 만료 설정을 사용할 경우 사용자에게 공지 필요

  • 비밀번호 만료 설정을 하면, 사용자가 로그인할 때 변경을 요구받으므로 사전에 안내하는 것이 중요하다.
반응형

마무리

MySQL의 ALTER USER 명령어는 비밀번호 변경, 계정 잠금 및 해제, 인증 방식 변경, 리소스 제한 설정 등 다양한 기능을 제공한다.
특히 데이터베이스 보안을 강화하고, 사용자 계정을 효과적으로 관리하는 데 필수적인 명령어다.
사용자 계정을 변경할 때는 반드시 현재 설정을 확인하고, 비밀번호 정책과 보안 규칙을 준수하는 것이 중요하다.

공식 가이드 문서

MySQL ALTER USER 공식 문서:
https://dev.mysql.com/doc/refman/8.0/en/alter-user.html

반응형