MySQL 8.0에서 루트 비밀번호를 재설정하는 방법
불행하게도 MySQL 루트 비밀번호를 잊어버리거나 분실한 경우 어떻게든 비밀번호를 복구할 수 있는 방법이 필요합니다. 우리가 알아야 할 것은 비밀번호가 사용자 테이블에 저장되어 있다는 것입니다. 이는 MySQL 인증을 우회하여 비밀번호 기록을 업데이트할 수 있는 방법을 찾아야 함을 의미합니다.
운 좋게도 쉽게 달성할 수 있는 방법이 있으며 이 튜토리얼에서는 MySQL 8.0 버전에서 루트 비밀번호를 복구하거나 재설정하는 과정을 안내할 것입니다.
MySQL 문서에 따르면 루트 MySQL 비밀번호를 재설정하는 방법에는 두 가지가 있습니다. 우리는 두 가지를 모두 검토할 것입니다.
–init-file을 사용하여 MySQL 루트 비밀번호 재설정
루트 비밀번호를 재설정하는 방법 중 하나는 로컬 파일을 생성한 다음 표시된 대로 --init-file
옵션을 사용하여 MySQL 서비스를 시작하는 것입니다.
vim /home/user/init-file.txt
mysql 사용자가 파일을 읽을 수 있는지 확인하는 것이 중요합니다. 해당 파일 내에 다음을 붙여넣습니다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
위의 "new_password"를 사용하려는 비밀번호로 변경하세요.
이제 MySQL 서비스가 중지되었는지 확인하십시오. 다음을 수행할 수 있습니다.
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
그런 다음 다음을 실행합니다.
mysqld --user=mysql --init-file=/home/user/init-file.txt --console
그러면 MySQL 서비스가 시작되고 프로세스 중에 생성된 init 파일이 실행되어 루트 사용자의 비밀번호가 업데이트됩니다. 비밀번호를 재설정한 후에는 반드시 파일을 삭제하세요.
반드시 서버를 종료하신 후 정상적으로 시작하시기 바랍니다.
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
이제 새 비밀번호를 사용하여 루트로 MySQL 서버에 연결할 수 있습니다.
mysql -u root -p
–skip-grant-tables를 사용하여 MySQL 루트 비밀번호 재설정
두 번째 옵션은 --skip-grant-tables
옵션을 사용하여 MySQL 서비스를 시작하는 것입니다. 서비스가 그런 식으로 시작되는 동안에는 모든 사용자가 비밀번호 없이 연결할 수 있으므로 보안 수준이 낮습니다.
서버가 --skip-grant-tables
시작되면 --skip-networking
옵션이 자동으로 활성화되므로 원격 연결을 사용할 수 없습니다.
먼저 MySQL 서비스가 중지되었는지 확인하세요.
systemctl stop mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
그런 다음 다음 옵션을 사용하여 서비스를 시작하십시오.
mysqld --skip-grant-tables --user=mysql &
그런 다음 간단히 실행하여 mysql 서버에 연결할 수 있습니다.
mysql
--skip-grant-tables
옵션으로 서비스를 시작하면 계정 관리가 비활성화되므로 승인을 다시 로드해야 합니다. 이렇게 하면 나중에 비밀번호를 변경할 수 있습니다.
FLUSH PRIVILEGES;
이제 다음 쿼리를 실행하여 비밀번호를 업데이트할 수 있습니다. “new_password”를 사용하려는 실제 비밀번호로 변경하세요.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
이제 MySQL 서버를 중지하고 정상적으로 시작하십시오.
systemctl stop mysqld.service # for distros using systemd
systemctl restart mysqld.service # for distros using systemd
/etc/init.d/mysqld stop # for distros using init
/etc/init.d/mysqld restart # for distros using init
새로운 비밀번호로 접속하실 수 있습니다.
mysql -u root -p
다음 MySQL 관련 기사를 읽고 싶을 수도 있습니다.
- CentOS, RHEL 및 Fedora에 MySQL 8을 설치하는 방법
- 15가지 유용한 MySQL 성능 조정 및 최적화 팁
- 12가지 Linux용 MySQL 보안 사례
- MySQL 성능을 모니터링하는 4가지 유용한 명령줄 도구
- MySQL 데이터베이스 관리 명령
결론
이 기사에서는 MySQL 8.0 서버의 잃어버린 루트 비밀번호를 재설정하는 방법을 배웠습니다. 과정이 쉬웠기를 바랍니다.