유용한 모든 것

[MySQL, 윈도우] root 계정 비밀번호 재설정

뭉지(moonz) 2022. 7. 7. 12:05
반응형

이번 포스팅에서는 윈도우에서 MySQL의 비밀번호 재설정하는 방법을 알아보겠습니다.

전체적인 순서는 아래와 같습니다.

1. MySQL 서비스 중지

2. 인증없이 접속할 수 있도록 재시작 (-skip-grant-tables 모드)

3. root 계정 접속 및 비밀 번호를 null로 설정

4. root로 비번 없이 접속 후 비밀번호 변경 (기존 모드 종료)

5. MySQL 서비스 시작


1. MySQL 서비스 중지

관리자 권한으로 명령 프롬프트(cmd)에 접속해야합니다.

아래 명령으로 작동 중인 서비스를 중지합니다.

net stop MySQL80

 

2. 인증없이 접속할 수 있도록 재시작 (-skip-grant-tables 모드)

본인 PC에서 Data 경로를 확인해야합니다.
필자는 C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Data 입니다.

명령 프롬프트에서 아래 명령으로 -skip-grant-tables 모드룰 실행합니다.

mysqld --datadir="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Data" --console -skip-grant-tables --shared-memory

 

3. root 계정 접속 및 비밀 번호를 null로 설정

이제 새로운 cmd 창에서 MySQL 서버에 접속해봅시다. (관리자 권한으로 실행!)

mysql -u root

이제 비밀번호를 재설정해야하는데 주의할 점 2가지가 있습니다.

  1. 기존에 사용되던 alter user 'root'@'localhost' identified with mysql_native_password by '{새 비밀번호}'; 명령어는 현재 모드에서는 동작하지 않는다.
  2. update user set authentication_string='{새 비밀번호}' where user='root'; 로 진행할 시 해쉬화가 되지 않는다.

그래서 일단 비밀번호를 null로 설정해야합니다.

user mysql;
update user set authentication_string=null where user='root';

select authentication_string from user;       // null로 설정된 비밀번호 확인 가능!
flush privileges;

 

4. root로 비번 없이 접속 후 비밀번호 변경 (기존 모드 종료)

이제 기존 접속을 종료하고 다시 root로 접속합니다. 이때 비밀번호 없이 접속 가능합니다.

mysql -u root

이제 alter 명령어로 비밀번호를 재설정해봅시다.

alter user 'root'@'localhost' identified with mysql_native_password by '{새 비밀번호}';
use mysql
select authenticcation_string from user;    // 해쉬화된 비밀번호 확인 가능!

 

5. MySQL 서비스 시작

이제 다시 MySQL을 재가동해야합니다.
그전에 -skip-grant-tables 모드를 종료(Ctrl+c)시키고 새 프롬프트에서 아래 명령어를 입력하여 시작합니다.

net start MySQL80

그럼 성공적으로 MySQL 접속이 가능해집니다 :)

 

출처글

반응형