MySQL 사용자 비밀번호 변경: ALTER USER 명령 (MySQL 5.7 / 8.0) + 루트 복구

目次

1. [Quick Answer] MySQL 사용자 비밀번호 변경 명령 목록 (가장 빠른 해결책)

MySQL에서 사용자의 비밀번호를 변경하는 기본 명령은 ALTER USER입니다.
이 방법은 MySQL 5.7 이후 버전에서 권장되며, MySQL 8.0에서도 동일하게 사용됩니다.

1.1 기본 구문 (가장 일반적으로 사용됨)

ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';
  • username : 업데이트할 대상 사용자 이름
  • localhost : 클라이언트 호스트 (“사용자 이름 + 호스트”로 MySQL 계정이 식별됩니다)
  • newpassword : 새 비밀번호

실행 후 변경 사항은 즉시 적용됩니다. 대부분의 경우 FLUSH PRIVILEGES;가 필요하지 않습니다 (ALTER USER가 자동으로 권한 테이블을 업데이트합니다).

일반적인 함정

  • 동일한 사용자 이름이라도 @'localhost'@'%'는 서로 다른 계정으로 취급됩니다.
  • 비밀번호에 포함된 특수 문자는 작은 따옴표로 감싸야 합니다.

1.2 원격 접근 사용자(%) 변경

ALTER USER 'username'@'%' IDENTIFIED BY 'newpassword';

%는 “모든 호스트”를 의미합니다.
클라우드 환경이나 외부에서 연결을 허용하는 사용자에게 일반적으로 사용됩니다.

주의사항

  • SELECT User, Host FROM mysql.user; 명령으로 미리 확인하는 것이 안전합니다.
  • 잘못된 Host의 비밀번호를 변경하면 로그인할 수 없게 됩니다.

1.3 인증 플러그인을 지정하면서 비밀번호 변경 (8.0에서 중요)

MySQL 8.0에서는 기본 인증 플러그인이 caching_sha2_password입니다.
구버전 클라이언트와 연결할 수 없을 경우, 플러그인을 명시적으로 설정하십시오.

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'newpassword';
  • mysql_native_password : 레거시 방식 (호환성 우선)
  • caching_sha2_password : MySQL 8.0 표준 (권장)

전형적인 실수

  • 구버전 PHP나 클라이언트는 MySQL 8.0 기본 플러그인을 지원하지 않을 수 있습니다.
  • 인증 플러그인을 확인하지 않고 “로그인할 수 없다”고 판단하는 것

1.4 권한 오류가 발생한 경우

오류 예시:

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)

이 경우 현재 로그인한 사용자는 변경 권한이 없습니다.

확인:

SHOW GRANTS FOR CURRENT_USER();

루트 사용자이거나 충분한 권한을 가진 사용자로 명령을 실행하십시오.

1.5 변경 후 확인 방법

SELECT User, Host, plugin FROM mysql.user WHERE User='username';
  • plugin 컬럼을 통해 인증 플러그인 확인
  • 가장 확실한 확인 방법은 실제로 로그인하여 연결을 확인하는 것입니다.

1.6 기존 세션에 대한 영향

비밀번호를 변경한 후:

  • 새로운 연결은 새 비밀번호를 사용해야 합니다.
  • 기존 세션은 환경에 따라 즉시 종료될 수 있습니다.
  • 운영 환경에서는 업무 시간 외에 변경하는 것이 권장됩니다.

2. MySQL 사용자와 호스트 기본 (일반적인 “막힘” 문제 방지)

MySQL에서는 사용자를 단순히 “사용자 이름”만으로 식별하지 않습니다. 대신 “사용자 이름 + 클라이언트 호스트(Host)”의 조합으로 식별합니다.
이를 이해하지 못하면 흔히 “비밀번호를 변경했지만 여전히 로그인할 수 없다”는 문제에 직면하게 됩니다.

2.1 사용자는 “user@host” 쌍이다

예시:

  • 'appuser'@'localhost'
  • 'appuser'@'%'
  • 'appuser'@'192.168.1.%'

이들은 모두 서로 다른 계정으로 취급됩니다.
따라서 localhost의 비밀번호를 변경해도 % 계정에는 영향을 주지 않습니다.

확인 명령:

SELECT User, Host FROM mysql.user ORDER BY User, Host;

일반적인 함정

  • 동일한 사용자 이름을 가진 여러 계정이 존재한다는 점을 인식하지 못함
  • localhost의 비밀번호를 변경했지만 실제로는 TCP(127.0.0.1)로 로그인하고 있음

2.2 localhost와 127.0.0.1은 다르게 취급됩니다

MySQL에서는:

  • localhost → UNIX 소켓 연결 (로컬 내부 연결)
  • 127.0.0.1 → TCP/IP 연결

환경에 따라 다른 계정이 매칭될 수 있습니다.

확인:

mysql -u username -p -h 127.0.0.1

위의 방법으로 로그인할 수 없다면, @'127.0.0.1' 계정이 존재하지 않을 수 있습니다.

2.3 현재 인증된 사용자 확인

“어떤 계정으로 인증되었는지”를 이해하는 것이 중요합니다.

SELECT CURRENT_USER();

이것은 실제로 인증된 “user@host”를 표시합니다.

SELECT USER();는 연결 요청 정보를 보여주므로, 일치하지 않을 수 있습니다.

2.4 권한 확인 (SHOW GRANTS)

비밀번호를 변경할 수 없다면, 권한 부족이 원인일 수 있습니다.

SHOW GRANTS FOR 'username'@'host';

또는 현재 로그인된 사용자에 대해:

SHOW GRANTS FOR CURRENT_USER();

최소 요구 권한

  • ALTER USER
  • 또는 SYSTEM_USER (MySQL 8.0 이상)

2.5 일반적인 실패 패턴

  1. 잘못된 Host에 대한 비밀번호를 변경했습니다
  2. 인증 플러그인이 다릅니다 (8.0에서 매우 흔함)
  3. 대상 계정이 애초에 존재하지 않습니다

사용자가 존재하는지 확인하세요:

SELECT User, Host FROM mysql.user WHERE User='username';

이 모델을 이해하면 대부분의 비밀번호 변경 관련 문제를 피할 수 있습니다.

3. 권장 절차: ALTER USER로 안전하게 변경 (MySQL 8.0 / 5.7에 작동)

MySQL 5.7 이상에서는 ALTER USER로 비밀번호를 변경하는 것이 표준이자 권장 접근법입니다.
UPDATE mysql.user와 같은 직접 업데이트는 버전에 따라 다르게 동작할 수 있으며 미래 호환성 위험을 초래하므로 피하는 것이 좋습니다.

3.1 사전 확인 (변경 전에 항상 확인)

비밀번호를 변경하기 전에 이 세 가지 항목을 확인하세요.

① 대상 사용자와 Host 확인

SELECT User, Host FROM mysql.user WHERE User='username';
  • 동일한 사용자 이름으로 여러 계정이 존재하는지 확인
  • localhost%를 혼동하지 마세요

② 현재 인증 플러그인 확인 (8.0에서 중요)

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
  • caching_sha2_password (MySQL 8.0 표준)
  • mysql_native_password (레거시 플러그인)

일부 연결 실패는 인증 플러그인으로 인해 발생합니다.

③ 현재 인증된 사용자 확인

SELECT CURRENT_USER();

권한 오류를 피하기 위해 root 또는 적절한 권한을 가진 사용자로 명령어를 실행하세요.

3.2 ALTER USER 실행 (표준 형식)

ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';

변경 사항은 즉시 적용됩니다.
대부분의 경우 FLUSH PRIVILEGES;가 필요하지 않습니다.

주의사항

  • 비밀번호 정책(validate_password)을 위반하면 ERROR 1819가 발생할 수 있습니다
  • 비밀번호에 특수 문자가 포함된 경우 항상 단일 따옴표로 감싸세요

3.3 인증 플러그인을 지정하며 변경 (필요한 경우에만)

MySQL 8.0 환경에서 오래된 클라이언트를 사용하는 경우:

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

변경해야 하는 경우:

  • 오래된 PHP / 오래된 MySQL 클라이언트로 연결할 수 없는 경우
  • caching_sha2_password를 지원하지 않는 환경

변경하지 말아야 하는 경우:

  • 현대적인 환경에서 문제 없이 이미 연결되는 경우 (표준 플러그인이 더 안전함)

3.4 변경 후 검증

① 인증 플러그인 검증

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

② 실제 로그인으로 검증

mysql -u username -p

항상 로그인이 가능한지 테스트하세요.

3.5 기존 세션에 미치는 영향

비밀번호 변경 후:

  • 새 연결 → 새 비밀번호를 사용해야 함
  • 기존 연결 → 환경에 따라 유지될 수 있음
  • 프로덕션 → 애플리케이션 연결 재시작이 필요할 수 있음

일반적인 실수

  • 애플리케이션의 연결 자격 증명을 업데이트하지 않음
  • 구성 파일에 오래된 비밀번호가 여전히 남아 있음

3.6 프로덕션 환경을 위한 안전한 운영 팁

  • 업무 시간 외에 변경 작업 수행
  • 사전에 애플리케이션 구성 파일 확인
  • SSH 세션을 끊지 않고 작업 수행
  • root를 변경할 때 복구 방법을 준비해 두기

4. MySQL 8.0과 5.7의 차이점

가장 큰 문제는 MySQL 비밀번호를 변경할 때 MySQL 8.0과 5.7 사이의 인증 방식 차이 때문입니다.
특히 “변경했는데 로그인할 수 없다”는 경우는 인증 플러그인 차이에서 비롯됩니다.

Diagram showing the difference between MySQL 5.7 mysql_native_password and MySQL 8.0 caching_sha2_password authentication methods

MySQL 5.7과 MySQL 8.0 사이의 인증 차이

4.1 기본 인증 플러그인 차이

VersionDefault authentication plugin
MySQL 5.7mysql_native_password
MySQL 8.0caching_sha2_password

MySQL 8.0에서는 caching_sha2_password가 더 강력한 보안을 위한 표준이 되었습니다.
하지만 오래된 클라이언트(구버전 PHP, 구버전 MySQL 커넥터 등)는 이를 지원하지 않을 수 있습니다.

확인 방법:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

일반적인 문제

  • 오래된 클라이언트는 MySQL 8.0에서 생성된 사용자에 연결할 수 없습니다
  • 오류가 발생해도 근본 원인이 인증 플러그인임을 인식하지 못합니다

4.2 호환성을 위한 인증 플러그인 전환 방법

오래된 환경에서 연결해야 할 경우에만 다음과 같이 변경합니다:

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

변경 후에는 항상 연결 테스트를 수행하십시오.

주의사항

  • 보안 관점에서 caching_sha2_password가 더 안전합니다
  • 불필요하게 레거시 플러그인으로 전환하지 마세요
  • 가능하면 클라이언트 측을 업데이트하는 것이 바람직합니다

4.3 직접 UPDATE는 권장되지 않음

MySQL 5.7 및 이전 버전에서는 다음과 같은 방법을 사용했습니다:

UPDATE mysql.user
SET authentication_string=PASSWORD('newpassword')
WHERE User='username';
FLUSH PRIVILEGES;

그러나 이 접근 방식은:

  • 버전 의존성이 높음
  • 8.0에서 사양 변경의 영향을 받음
  • 향후 폐지될 가능성이 높음

권장 방법: ALTER USER 사용

4.4 validate_password 플러그인의 동작 차이

MySQL 5.7 및 8.0에서는 기본적으로 비밀번호 정책(강도 검사) 기능이 제공됩니다.

확인:

SHOW VARIABLES LIKE 'validate_password%';

정책을 위반하면 다음과 같은 오류가 발생할 수 있습니다:

ERROR 1819 (HY000)

.

많은 8.0 환경이 더 엄격한 보안 기준을 적용하기 때문에,
5.7에서 업그레이드한 후에는 강화된 정책 요구사항으로 인해 비밀번호 변경이 통과되지 않을 수 있습니다.

4.5 현재 버전 확인 방법

현재 실행 중인 버전이 확실하지 않다면:

SELECT VERSION();

버전을 확인하지 않고 수정 작업을 적용하면 잘못된 방법을 사용할 수 있습니다

5. 잊어버린 root 비밀번호 복구 (보안 중심 절차)

MySQL root 사용자(관리자) 비밀번호를 잊어버리면 일반적으로 로그인할 수 없습니다.
이 경우 임시로 권한 테이블을 비활성화하고 비밀번호를 재설정해야 합니다. 하지만 이 절차는 보안 위험을 동반하므로 단계별로 신중히 진행하십시오.

5.1 root 비밀번호가 실제로 필요한지 확인

먼저 다음 항목을 확인하십시오:

  • OS 수준의 sudo 권한이 있는지 여부
  • auth_socket 인증이 활성화되어 있는지 여부(Ubuntu 기반 시스템에서 흔함)

예시 확인:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='root';

pluginauth_socket이면 OS root 사용자로 로그인할 수 있습니다.

sudo mysql

이 방법이 작동한다면 비밀번호만 재설정하면 됩니다.

5.2 복구 흐름 (일반 절차)

① MySQL 서버 중지

sudo systemctl stop mysql

② 권한 테이블 비활성화 상태로 시작

sudo mysqld_safe --skip-grant-tables &

--skip-grant-tables 옵션은 인증을 비활성화합니다.
이 상태에서는 누구나 연결할 수 있으므로 절차를 신속히 마무리하십시오.

③ MySQL에 연결

mysql -u root

비밀번호 없이 연결할 수 있습니다.

④ root 비밀번호 재설정 (권장 방법)

ALTER USER 'root'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';

중요

  • UPDATE mysql.user를 직접 사용하지 마세요
  • ALTER USER를 사용하세요 (버전 호환성을 위해)

⑤ 권한 테이블 다시 활성화

FLUSH PRIVILEGES;

⑥ MySQL을 정상 모드로 재시작

sudo systemctl restart mysql

그 후 정상 로그인을 확인하세요:

mysql -u root -p

5.3 일반적인 실수

  • --skip-grant-tables를 활성화된 상태로 남겨두기 (심각한 보안 위험)
  • root Host를 실수로 변경하기
  • 인증 플러그인을 잘못 변경하여 자신을 잠그기

5.4 프로덕션 환경에 대한 주의사항

  • 공용 서버에서는 항상 유지보수 시간대에 수행하세요
  • 작업 중 SSH 세션을 활성 상태로 유지하세요
  • 가능하다면 미리 백업을 생성하세요

Root 비밀번호 복구는 신중하게 실행하면 안전하게 수행할 수 있습니다.

6. 일반적인 오류 및 해결 방법 (오류 메시지별 트래픽 캡처)

MySQL 비밀번호 변경 시 여러 전형적인 오류가 발생합니다.
아래에서는 자주 검색되는 오류 코드별로 일반적인 원인과 해결 방법을 정리하였습니다.

6.1 ERROR 1819 (비밀번호가 정책 요구 사항을 충족하지 않음)

오류 예시:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

원인

비밀번호가 validate_password 플러그인에 의해 강제되는 강도 검증에 실패했습니다.

현재 정책 확인

SHOW VARIABLES LIKE 'validate_password%';

중요 설정:

  • validate_password.length
  • validate_password.policy
  • validate_password.mixed_case_count
  • validate_password.number_count
  • validate_password.special_char_count

해결 방법 ① (권장): 더 강력한 비밀번호 사용

  • 최소 12자 이상
  • 대문자, 소문자, 숫자, 기호 포함
  • 사전 단어 피하기

해결 방법 ② (임시로 정책 완화)

SET GLOBAL validate_password.policy = LOW;

작업 완료 후 원래 설정으로 복원하는 것을 권장합니다.

일반적인 실수

  • 프로덕션에서 정책을 완화된 상태로 남겨두기
  • 이 설정 변경에 SUPER 권한이 필요하다는 점을 간과하기

6.2 ERROR 1227 (권한 부족)

오류 예시:

ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)

원인

현재 사용자가 ALTER USER 또는 SYSTEM_USER 권한이 부족합니다.

권한 확인

SHOW GRANTS FOR CURRENT_USER();

해결 방법

root 또는 충분한 권한을 가진 사용자로 명령어를 실행하세요.

필요한 경우:

GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;

주의

  • MySQL 8.0에서는 SYSTEM_USER 권한도 필요할 수 있습니다
  • 프로덕션에서는 최소 권한 원칙을 따르세요

6.3 비밀번호 변경 후 로그인 불가

주요 원인

  1. 잘못된 Host
  2. 인증 플러그인 불일치
  3. 클라이언트 호환성 문제
  4. 애플리케이션 구성 업데이트 안 함

① Host 확인

SELECT User, Host FROM mysql.user WHERE User='username';

② 인증 플러그인 확인

SELECT plugin FROM mysql.user WHERE User='username';

③ 인증 플러그인 변경 (필요한 경우)

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';

④ 애플리케이션 구성 확인

  • .env
  • config.php
  • 연결 문자열 (DSN)

일반적인 실수

  • MySQL은 변경했지만 애플리케이션을 업데이트하지 않음
  • Docker 환경에서 컨테이너를 재시작하지 않음

6.4 변경 후에도 이전 비밀번호로 로그인 가능

일반적으로 ALTER USER로 변경한 내용은 즉시 적용됩니다.

가능한 원인:

  • 실제로 다른 Host 계정을 변경함
  • 연결이 다른 서버(복제본)를 가리킴
  • 세션 캐싱

확인:

SELECT CURRENT_USER();

연결된 서버와 인증된 사용자를 정확히 확인하는 것이 중요합니다.

7. 보안 운영: 비밀번호 정책 및 모범 사례

비밀번호를 변경하는 것은 일회성 작업이 아닙니다.
실제 운영에서는 강도 적용, 권한 설계 및 운영 규칙을 결합하여 보안을 유지합니다.

7.1 validate_password 플러그인 사용

MySQL은 비밀번호 강도를 적용하기 위한 내장 기능을 제공합니다.

현재 설정 확인

SHOW VARIABLES LIKE 'validate_password%';

주요 구성 매개변수

  • validate_password.length (최소 길이)
  • validate_password.policy (LOW / MEDIUM / STRONG)
  • validate_password.mixed_case_count
  • validate_password.number_count
  • validate_password.special_char_count

예시 구성 (최소 12자, MEDIUM 정책)

SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.policy = MEDIUM;

참고

  • GLOBAL 변경은 재시작 후 초기화될 수 있습니다
  • 설정을 지속하려면 구성 파일(my.cnf / my.ini)에 지정하십시오

7.2 강력한 비밀번호에 대한 최소 요구사항

실제 적용되는 권장 표준:

  • 최소 12자
  • 대문자, 소문자, 숫자 및 기호 포함
  • 사전 단어 사용 금지
  • 다른 서비스에서 재사용 금지

예시:

X9v!pQ4z#Lm2

피해야 할 예시

password123
mysql2025
companyname!

7.3 정기적인 변경보다 더 중요한 점

‘6개월마다 변경’보다 더 중요한 것은 잠재적인 자격 증명 유출을 가정한 설계입니다.

① 애플리케이션 사용자 분리

  • 애플리케이션에서 root 사용 금지
  • 최소 권한 사용자 생성

예시:

GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'appuser'@'localhost';

② 권한 최소화 (최소 권한 원칙)

필요한 작업만 허용하여 잠재적 피해를 제한합니다.

③ 감사 및 로그 사용

예시 로그 확인:

tail -f /var/log/mysql/mysql.log

MySQL Enterprise는 감사 플러그인도 지원합니다.

7.4 프로덕션 환경을 위한 운영 팁

  • 프로덕션 변경 전 스테이징에서 테스트
  • 변경 이력 추적 (Git 또는 문서)
  • 변경 후 항상 연결 테스트 수행
  • 작업 중 SSH 세션을 활성 상태로 유지

7.5 절대로 해서는 안 되는 일

  • 애플리케이션에서 root 계정 사용
  • 소스 코드에 비밀번호를 하드코딩
  • validate_password를 비활성화하고 그대로 두기
  • --skip-grant-tables 옵션으로 서버 실행 상태 유지

비밀번호 관리는 일회성 작업이 아니라 지속적인 운영 설계의 일부입니다.

8. FAQ (자주 묻는 질문)

8.1 Q. 비밀번호 변경 후 활성 세션은 어떻게 되나요?

A. 원칙적으로 새 연결은 새로운 비밀번호가 필요합니다.
기존 세션은 환경 및 설정에 따라 즉시 종료되거나 계속 활성 상태일 수 있습니다.

실제 상황에서는:

  • 프로덕션에서는 업무 시간 외에 변경 수행
  • 연결을 새로 고치기 위해 애플리케이션 재시작

위와 같이 하는 것이 권장됩니다.

8.2 Q. 비밀번호를 변경했지만 여전히 로그인할 수 없습니다

가장 흔한 세 가지 원인은 다음과 같습니다:

  1. 잘못된 호스트 (localhost vs % 등)
  2. 인증 플러그인 불일치 (8.0에서 매우 흔함)
  3. 애플리케이션 설정이 업데이트되지 않음

다음으로 확인하십시오:

SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';

plugin 열에 특히 주의하십시오.

8.3 Q. 특정 사용자만 비밀번호를 변경하도록 허용할 수 있나요?

예.

GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;

MySQL 8.0에서는 SYSTEM_USER 권한도 필요할 수 있습니다.

SHOW GRANTS FOR 'username'@'host';

이를 사용해 권한을 확인하십시오.

8.4 Q. MariaDB에서도 동일한 방법인가요?

기본적으로 ALTER USER를 사용할 수 있지만,

  • 인증 플러그인
  • 비밀번호 정책 동작
  • 버전별 차이점

환경에 따라 다를 수 있습니다.

다음으로 확인하십시오:

SELECT VERSION();

MySQL Community Edition은 기본적으로 내장된 비밀번호 이력 추적을 제공하지 않습니다.

8.5 Q. 비밀번호 변경 이력을 확인할 수 있나요?

가능한 접근 방식:

  • 감사 로깅 활성화
  • 외부 로그 관리 사용
  • 운영 문서에서 이력 추적

예시:

tail -f /var/log/mysql/mysql.log

8.6 Q. –skip-grant-tables를 사용해 비루트 사용자를 복구할 수 있나요?

예, 하지만 매우 위험한 상태를 만들게 됩니다.
절차를 완료한 후 즉시 정상 모드로 복귀하십시오.

9. 요약

MySQL 비밀번호를 변경하는 것은 간단해 보일 수 있지만, user@host 모델, 인증 플러그인, 그리고 권한 설계를 이해하지 못하면 쉽게 문제를 일으킬 수 있습니다.

이 문서의 핵심 포인트는 다음과 같습니다:

9.1 표준 방법으로 ALTER USER 사용

ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
  • MySQL 5.7 이후 표준 방법
  • UPDATE mysql.user 직접 사용은 권장되지 않음
  • FLUSH PRIVILEGES는 보통 필요 없음

9.2 사용자는 “user@host” 형태로 관리됩니다

  • localhost%는 서로 다른 계정
  • 동일한 사용자 이름을 가진 여러 계정이 존재할 수 있음
  • SELECT User, Host FROM mysql.user; 로 확인

9.3 8.0에서 인증 플러그인에 주의하세요

  • 8.0 기본값: caching_sha2_password
  • 레거시 호환성: mysql_native_password
  • 연결이 안 될 경우 plugin 컬럼을 확인
    SELECT plugin FROM mysql.user WHERE User='username';
    

9.4 루트 비밀번호 복구 시 주의사항

  • --skip-grant-tables는 일시적인 조치에 불과함
  • 작업이 끝난 후 항상 정상 모드로 복귀
  • 운영 환경에서는 유지보수 창 동안 수행

9.5 대부분의 오류는 명확한 원인이 있습니다

  • ERROR 1819 → 비밀번호 정책 위반
  • ERROR 1227 → 권한 부족
  • 로그인 불가 → 호스트 불일치 또는 인증 플러그인 불일치

9.6 실제로는 최소 권한과 운영 설계가 가장 중요합니다

  • 애플리케이션에서 루트를 사용하지 말 것
  • 전용 사용자를 생성
  • 강력한 비밀번호 정책 적용
  • 변경 후 항상 연결 테스트

MySQL 비밀번호 관리는 단순히 값을 변경하는 것이 아니라 안전한 데이터베이스 운영의 기반입니다.
환경에 맞는 방법을 선택하고 신중하게 실행하십시오.