DataBase/MySQL

[MySQL] MySQL 8.0 비밀번호 분실 시 해결 방법(in Windows)

Dev_en 2020. 12. 8. 05:44

mysql 에서 비밀번호를 분실했을 때 구글링을 하면

 

"mysql 서비스를 종료 후,

cmd에서 mysqld --skip-grant 를 실행하고,

새 cmd 창을 열어 mysql -u root 을 실행하세요'

 

이런 답변이 가장 많이 나온다...

 

하지만 나는 mysqld --skip-grant 실행 시, 다른 사람들과 다르게 cmd창이 멈추지 않고 다시 프롬프트가 활성화되었다.

이후 새 cmd창에서 mysql -u root 을 실행하면 error 2003(서버가 꺼져 있음)이나 error 1045(비밀번호 틀림)이 출력되었다.

 

mysqld --skip-grant 동작하지 않아 '로그아웃한 상태로 서버를 작동시키는 것'부터 실패한 것이다.

 

아마 버전 차이로 인한 문제였던 듯 싶다. 위와 같은 방법이 성공한 블로그들은 mysql 5.x 이하 버전이었던 것으로 기억한다.

 

MySQL 8.0 의 경우 아래의 방법을 따라하면 비밀번호 분실 시 재설정이 가능하다. 검색어에 8.0 진작 넣을걸.....

 

 

1. MySQL 서비스 중지

: 작업관리자 - 서비스 탭 - MySQL 우클릭 - 중지

 

 

2. 비밀번호를 변경할 init 텍스트파일 생성

(파일 이름, 파일 위치는 예시)

 

  • 파일 이름 : mysql-init.txt
  • 파일 위치 : C
  • 파일 내용
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

* MyNewPass 에 변경할 비밀번호를 입력

 

 

3. 관리자 권한으로 cmd 실행

 

4. 아래 코드 실행

C:\> cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
C:\> mysqld --init-file=C:\\mysql-init.txt

※MySQL 설치 마법사로 MySQL을 설치한 경우, --defaults-file 옵션이 필요함

C:\> mysqld --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --init-file=C:\\mysql-init.txt

* --defaults-file 디렉토리는 '제어판 - 서비스 - MySQL 우클릭 - 속성 - 실행 파일 경로'에서 확인 가능

 

 

5. 프롬프트가 멈추면 성공

=> CMD창을 닫지 않은 채로 mysql을 실행하면 변경한 비밀번호로 로그인 가능!

 

 


Reference : dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html