Ubuntu에서 MySQL 루트 암호 재설정
이 자습서에서는 Ubuntu에서 MySQL root
암호를 재설정해야 하는 두 가지 시나리오를 고려합니다. 첫째, root
비밀번호를 잊어버렸고 재설정하고 싶을 때; 둘째, mysql_secure_installation
으로 root
암호를 설정할 수 없는 경우입니다.
이 튜토리얼에 제공된 지침은 MySQL 버전 8.0.29 및 Ubuntu 20.04.4를 사용하여 테스트되었습니다. 아래의 두 시나리오에 대한 솔루션을 살펴보겠습니다.
수퍼유저
또는 루트
권한으로 액세스할 수 있는 다른 방법으로 실행 중인 Ubuntu 20.04.4 서버에 액세스할 수 있어야 합니다.Ubuntu에서 잊어버린 MySQL root
암호 재설정
데이터베이스에 대해 강력한 암호를 유지하는 것은 옳지만 기억하기 어려울 수 있습니다. MySQL root
암호를 잊은 경우 어떻게 합니까?
공포에 질리지 말 것! 우리 중 많은 사람들이 이 문제에 직면하지만 업데이트할 수 있는 방법이 있습니다.
-
다음 명령을 사용하여 MySQL 버전을 확인합니다.
$ mysql --version
-
MySQL 서버를 종료합니다.
이러한 방식으로
root
암호를 재설정하기 위해 안전 모드에서 쉽게 다시 시작할 수 있습니다. 시스템의루트
비밀번호를 입력해야 합니다. 여기서는 우분투입니다. -
테이블 권한 없이 MySQL 서버를 시작하려면 다음 명령을 사용하여
systemd
구성 파일을 업데이트하여 시작 시 MySQL 서버에 추가 명령줄 매개 변수를 전달합니다.sudo systemctl edit mysql
Enter를 누르는 즉시
nano
편집기를 사용하여 파일이 열립니다. 이를 사용하여 MySQL의서비스 재정의
를 편집합니다.이러한 방식으로 MySQL의 기본 서비스 매개변수를 업데이트할 수 있습니다.
nano
편집기에서 방금 연 빈 파일에 다음을 추가합니다.[Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
위에 제공된 내용을 파일에 붙여넣은 후 Ctrl+X를 눌러 파일을 종료하고 Y를 눌러 방금 만든 업데이트를 저장합니다. , Enter를 눌러 파일 이름을 확인합니다.
여기에서
ExecStart
는 먼저 모든 기본값을 지운 다음systemd
에 다른 매개변수를 포함하는 새 시작 명령을 제공합니다. 이 매개변수는 네트워킹 및 승인 테이블 로드를 비활성화합니다. -
업데이트를 적용하려면 다음 명령을 실행하여
systemd
구성을 다시 로드합니다.sudo systemctl daemon-reload
-
다음 명령을 사용하여 MySQL 서버를 시작합니다. 출력을 생성하지 않지만 MySQL 서버의 상태를 확인할 수 있습니다.
sudo systemctl start mysql
이번에는 네트워킹 및 그랜트 테이블이 활성화되지 않습니다.
-
루트
사용자로 데이터베이스에 연결합니다.sudo mysql -u root
-
이제 암호를 변경할 수 있지만 그 전에 다음 명령을 사용하여 데이터베이스 서버에 그랜트 테이블을 다시 로드하도록 지시하십시오.
mysql> FLUSH PRIVILEGES;
-
아래 명령문을 실행하여 MySQL
root
사용자의 암호를 재설정합니다.my_new_password
를 쉽게 기억할 수 있는 강력한 암호로 바꾸는 것을 잊지 마십시오.ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'my_new_password';
여기에서 MySQL을 사용하면 사용자 지정 인증을 사용할 수 있습니다. 따라서 위에 주어진 명령문은 MySQL이 이제 기본 인증을 사용하여 새 암호를 통해 MySQL
root
사용자를 인증하도록 합니다.브라보! 이제 MySQL
root
사용자의 암호가 변경되었습니다.exit
를 입력하여 MySQL 셸을 종료합니다. -
다음 명령을 실행하여 MySQL 서버를 일반 설정으로 되돌립니다.
sudo systemctl revert mysql
위의 명령문이 성공적으로 실행되었음을 의미하는 다음 출력과 유사하게 표시됩니다.
Removed /etc/systemd/system/mysql.service.d/override.conf. Removed /etc/systemd/system/mysql.service.d.
-
변경 사항을 적용하려면
systemd
구성을 다시 로드하십시오.sudo systemctl daemon-reload
-
다음과 같이 MySQL 서버를 다시 시작합니다.
sudo systemctl restart mysql
-
이제 다음 명령문을 실행하여 새 암호를 사용하여 MySQL
root
사용자로 로그인합니다.mysql -u root -p
MySQL
root
사용자 비밀번호를 입력하라는 메시지가 표시됩니다. 새 암호를 입력하고 데이터베이스 서버에 대한 액세스를 즐기십시오.
mysql_secure_installation
을 사용하여 MySQL root
비밀번호 설정 오류 수정
MySQL 서버를 처음 설치하는 사용자는 mysql_secure_installation
으로 MySQL root
암호를 설정하는 동안 생성되는 다음 오류를 만났을 수 있습니다.
Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
괜찮아요! 여기에 대한 해결책이 있습니다.
-
mysql_secure_installation
프로세스를 종료하거나 터미널을 닫습니다. -
다음 명령문을 사용하여 MySQL 서버에 로그인합니다.
sudo mysql
시스템의
root
암호를 입력하라는 메시지가 표시됩니다. 암호를 입력하면 MySQL 콘솔로 이동합니다. -
다음
ALTER
문을 실행합니다.my_new_password
를 비밀번호로 바꾸는 것을 잊지 마십시오.mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'my_new_password';
또한
exit
를 입력하여 MySQL 셸을 종료합니다. -
아래 명령문을 사용하여 새 비밀번호로 로그인합니다.
mysql -u root -p
마지막으로
루트
사용자로 MySQL 서버에 로그인할 수 있습니다.