MySQL에 접속해야 하는데 갑자기 root 계정의 비밀번호가 기억이 나질 않는다.
설마 지웠다가 다시 깔아야 하나 싶기도 하지만,
다행히도 비밀번호를 변경하는 방법이 존재한다.
이번 글에서는 리눅스에서 MySQL에서 root 계정의 비밀번호가 기억이 나지 않아서
로그인을 못하는 상황을 해결하기 위해 비밀번호를 재설정하는 방법을 다룬다.

MySQL 서비스 중지하기

MySQL의 root 계정의 비밀번호를 변경하기 위해서는
우선 MySQL 서비스를 중지해야 한다.
그 이유는 MySQL을 안전 모드로 시작해야 하기 때문인데,
안전 모드로 시작되면 인증을 필요로 하지 않기 때문에 MySQL을 그냥 접속 할 수 있다.

sudo systemctl stop mysql
ShellScript

MySQL 디렉토리 권한 설정하기

MySQL 서버를 안전 모드로 시작하려면
/var/run/mysqld 디렉토리를 생성하고 권한을 설정해야 한다.

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
ShellScript

MySQL 데이터베이스 서버를 안전 모드로 시작하기

위에서도 말했지만, MySQL 서버를 안전 모드로 시작해야 하는 이유는
root 계정의 인증을 무시하고 시작할 수 있기 때문이다.
아래의 명령어를 입력하여 안전 모드로 MySQL 서비스를 시작하자.

sudo mysqld_safe --skip-grant-tables &
ShellScript

이 명령은 MySQL 서버를 인증 없이 백그라운드로 실행(&)되게 하는 명령어이다.
백그라운드로 실행시켜서 터미널에서 다음 단계를 진행할 수 있도록 한다.

MySQL에 접속하여 root 비밀번호 재설정하기

MySQL 클라이언트를 사용하여 root 사용자로 접속한다.
안전 모드이기 때문에 로그인 시, 비밀번호를 입력할 필요가 없습니다.

mysql -u root
ShellScript

다음으로, MySQL 데이터베이스를 사용하도록 설정한다.

USE mysql;
SQL

root 사용자의 인증 방법을 비밀번호로 변경한다.

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
SQL

이제 root 사용자의 비밀번호를 재설정한다.
아래 명령어에서 newpassword 를 원하는 새로운 비밀번호로 바꾸면 된다.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;
SQL

✅ 만약 ERROR 1819 오류가 출력된다면?

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

MySQL의 비밀번호 정책 설정 때문에 비밀번호 재설정이 되지 않는 경우이다.
SHOW VARIABLES 명령을 사용하여 비밀번호 정책을 확인하자.

SHOW VARIABLES LIKE 'validate_password%';
SQL

이 명령은 현재 비밀번호 정책과 관련된 변수들을 표시한다.
예를 들어, validate_password_lengthvalidate_password_policy 변수를 확인할 수 있다.

비밀번호 재설정을 위해 비밀번호 정책을 완화시키자.

SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 4;
SQL

위 명령은 비밀번호 정책을 낮음( LOW )으로 설정하고,
최소 길이를 4자로 설정하겠다는 의미이다.
이 설정은 임시로 적용되므로, 비밀번호를 변경한 후에 원래 상태로 복구할 수 있다.
이제 다시 root 계정의 비밀번호를 재설정해보자.
이제 비밀번호가 정상적으로 재설정 될 것이다.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;
SQL

MySQL 서버를 정상 모드로 다시 시작하기

새 비밀번호 설정이 완료되면, MySQL 서버를 중지하고 정상 모드로 다시 시작해야 한다.
터미널에서 Ctrl + C 를 눌러 안전 모드를 중지한다.
그런 다음 MySQL 서버를 정상 모드로 시작한다.

sudo systemctl stop mysql
sudo systemctl start mysql
SQL

새로운 root 비밀번호로 MySQL에 접속

이제 새로 설정한 비밀번호를 사용하여 MySQL에 root 사용자로 접속한다.
잘 접속 될 것이다 🙂

MySQL에서 새로 설정한 비밀번호로 root 계정에 접속한 예시 화면

Similar Posts

댓글 남기기