본문 바로가기
Programming/데이터베이스

[MySQL] root 계정 비밀번호 분실했을 때 - mysql 8.x버전, window

by 조창대 2024. 11. 2.
반응형

안녕하세욤

맨날 외부 서버 db만 들어가다가 오랜만에 로컬 db 들어가려니까

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

 

띠용..? 

 

비밀번호가 맞지 않아서 연결 안 되는 것 같은데 예~~전에 설정해둔거라 기억나질 않는다.

 

비밀번호 초기화 폭풍 구글링 ..

결론적으로 mysql 프로세스 죽이고, 비밀번호 바꾸는 sql문이 담긴 초기화 파일이랑 같이 커멘드 명령어로 mysql 서버를 실행시키면서 비밀번호 초기화된 채로 서버 실행되도록 하는 과정이다.

 

 

1. 서비스 - 'MySQL80' 찾아서 죽이기

 

마우스 우클릭 - 중지 버튼 눌러서 프로세스를 끈다.

다음 속성 버튼 클릭

 

 

그럼 이렇게 속성창이 나오는데 여기서 실행 파일 경로를 복붙해둔다. 맨 뒤에 'MySQL80' 부분은 삭제 !! ( 'mysql installer' 로 sql 설치하신 분들은 필수 !!!)

 

 

2. mysql_init.txt 파일 생성

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

 

앞서 말했다시피 비밀번호 변경하는 쿼리문이 담긴 초기화 파일을 생성한다.

파일 이름과 경로는 편한대로 지정하면 된다.

나는 C:\php\dev 경로 내 mysql_init.txt로 저장했다~!

 

 

 

3. 관리자 모드 cmd창에서 mysql 실행

"MySQL80 실행경로" --init-file="명령어 텍스트 파일"

 

- mysql installer 로 설치한 경우

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\php\dev\mysql_init.txt"

 

- mysql 수동으로 설치한 경우

mysqld --init-file"=C:\mysql-init.txt"

 

 

난 installer 프로그램으로 workbench 등 관련 프로그램을 통합해서 설치했는데

구글링할 때는 mysqld --init-file ~ 명령어만 나와서 이걸로 해보니까 안 됐다.. 계속 access denied 뜸..

 

installer로 설치한 경우는 defaults-file 값도 넣어줘야 하나보다. my.ini 파일은 sql 서버의 기본 설정 (포트, 데이터 디렉토리, 인코딩 등)이 저장되어 있다.

 

 

 

그러면 이렇게 서버가 실행되는데

커서가 멈췄다고 당황하지 말자. sql 서버가 실행 중이라는 뜻이다.

 

cmd 관리자 모드로 창을 하나 더 연다.

 

여기서 mysql -u root -p ,  txt 파일에서 설정한 비밀번호 입력해보면

sql 서버에 접속이 된 걸 확인할 수 있다!

 

 

휴우 `(*>﹏<*)′

반응형