본문 바로가기
Database

[MySQL] root 비밀번호 잊어버렸을 때 해결 (mysql root reset / password reset)

by 비전공자 기록광 2023. 6. 15.
반응형

업무용 pc에 이전 사람이 설치한 mysql을 그대로 쓰다가 root 권한이 필요한데 몰라서 초기화하기로 했다.

그냥 다 지우고 새로 깔아도 되긴 하지만 초기화하기로 했다.

 

삽질 기록을 노션에 기록해뒀는데 그대로 블로그에도 적어본다.

 

 

💬 에러 메세지

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

 

참고로 using password: NO 는 비밀번호가 입력 안된거다.

또 cmd 창에서 mysql 명령이 안되면 환경 변수 설정부터 안되어 있는 것이다.

확인부터 한다.

 

1. 환경 변수 설정 확인 

mysql --version

이렇게 뜨면 설정이 되어 있는 것이다.

 

환경 변수 설정법을 모르면 하단 참고

 

 

Mysql 설치, 실행하기 (생활코딩/ 생활코딩mysql설치 / mysql cmd 오류 / mysql uroot-p 오류 / mysql입문 / mysq

생활코딩을 참고해 mysql을 설치했다. 오류때문에 한 3시간을 쩔쩔맸다. 진짜 왕초보적인 실수로 오류가 났던 것이다. 혹시 나와 같은 초보적 실수를 범하는 입문자를 위해 블로깅한다. mysql 설치

datamoney.tistory.com

 

 

2. mysql 서비스 중지 후 다시 실행

cmd창을 관리자 권한으로 실행해줘야 한다.

# 서비스 중지
net stop mysql

# 서비스 재설정
mysqld --initialize --console

# 서비스 재 실행
net start mysql

 

만약 net 명령어가 안된다면 직접 서비스 앱에 들어가서 중지, 재 실행 할 수 있다.

 

💬 에러 메시지

initialize specified but the data directory has files in it. Aborting.

 

친절하게 해결방법을 다 알려줬다.

mysql이 설치된 경로에서 data 폴더를 삭제하고 다시 서비스 재설정을 해준다.

 

다시 해주니 성공

 

 

💬 에러 메시지

MySQL 서비스를 시작합니다..
MySQL 서비스를 시작할 수 없습니다.

서비스가 오류를 보고하지 않았습니다

이 경우에는 로그를 확인해봐야 한다.

 

data에서 .err 파일을 찾아 메모장으로 열어 확인한다.

.err 파일이 없다면 보기 > 자세히 > 숨긴 항목, 파일 확장명 체크를 해준다.

 

💬 에러 메시지

[ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: 각 소켓 주소(프로토콜/네트워크 주소/포트)는 하나만 사용할 수 있습니다.
[ERROR] [MY-010257] [Server] Do you already have another mysqld server running on port: 3306 ?

로그를 확인하니 이미 포트를 사용중이라고 했다.

mariaDB 때문인듯해서 mariaDB의 서비스를 중지해줬다.

 

 

3. 인증 생략 & 서버의 공유 메모리 사용해 접속

mysqld --skip-grant-tables --console --shared-memory

 

 

이렇게 되면 성공이다. 이제 새로운 cmd창을 관리자 권한으로 실행시켜 준다.

만약 여기서 또 에러가 난다면 2번으로 돌아간다.

 

 

4. mysql root로 접속

mysql -u root

💬 에러 메시지

Access denied for user 'root'@'localhost’

3번이 제대로 안된거다.

3번을 하고 다시 관리자 권한으로 새로운 cmd창을 실행해준다.

 

 

5. mysql 실행, 비밀번호 재설정

# mysql 접속
use mysql

# 비밀번호 리셋
UPDATE user SET authentication_string=null WHERE user='새로운 비밀번호';

💬 에러 메시지

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

 

권한을 다시 reload해준다.

# 권한 reload
FLUSH PRIVILEGES;

# 비밀번호 리셋
UPDATE user SET authentication_string=null WHERE user='새로운 비밀번호';

 

 

이대로 끝..!

모든 창을 다 닫고 접속해본다. 성공적

 

 

삽질을 생각보다 오래했지만 또 하나 배웠다....

반응형

댓글