Windows mysql 관리자 패스워드(password) 분실시 암호 재설정 방법(변경 방법)


* 서비스 정지
    - services.msc 에서 mysql 서비스명 확인,
        version 5.7의 경우 : mysql57

net stop mysql57


//=================
* c:\mysql-init.txt 파일 작성
        - MySQL 5.7.6 이상
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
flush privileges;

        - MySQL 5.7.5 이하
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
flush privileges;



//=================
* 초기화 모드로 서버 시작
cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --init-file="C:\mysql-init.txt"


콘솔창에 명령을 입력할수 없는 상태로 멈춘다 -> 정상



//========

* MySQL 중지

작업관리자로 mysqld 프로세스를 종료 시킨다.



//========
* 서비스 시작
net start mysql57


* MySQL 접속


//===================================================
//참고

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html




* 현재 접속 가능한 상태에서 변경 쿼리


    - 5.7.6이상에서 패스워드 변경 쿼리
UPDATE mysql.user SET authentication_string= password('MyNewPass') WHERE User = 'root';
or

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';



    - 5.7.5이하에서만 가능
UPDATE mysql.user SET password= password('MyNewPass') WHERE User = 'root';



//========
//참고
use mysql;

UPDATE user SET Host = 'localhost' WHERE User = 'root';

UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';

FLUSH PRIVILEGES;


//==========
* 리눅스에서 서비스 제어, mysql 서비스 중단
kill `cat /mysql-data-directory/host_name.pid`


Posted by 코덴스

댓글을 달아 주세요