본문 바로가기

Others/데이터베이스

[Mysql/Mac] root 비밀번호 분실 시 초기화

프로젝트를 진행할 때 매일 RDS에 연결해서 쓴터라 오랜만에 root 계정의 DB에 접속했다.

역시 인간이란 망각의 동물..^^ 비밀번호를 잊어버리고 말았다! 

비밀번호를 너무 자주 잊어버리는 탓에.. 기억하기위해 포스팅을 해보고자 한다.

 

개발환경

- Mac OS 

homebrew로 mysql 설치

- mysql 버전: 8.0.16

 

비밀번호 초기화 및 변경 과정

1. mysql bin 파일이 있는 폴더로 이동한다.

보통은 /usr/local/mysql/bin 의 경로에 파일이 있지만

homebrew로 mysql을 설치했다면 경로가 조금 달라진다.

/usr/local/opt/mysql/bin 로 이동한다.

 

2. mysql 데몬을 종료한다.

만약 켜져있다면 mysql.server stop 으로 종료시킨다.

3. 비밀번호를 타이핑하지 않아도 mysql에 접속할 수 있는 모드로 접속한다.

mysqld_safe --skip-grant-tables &

 

 

4. mysql에 비밀번호 없이 접속한다.

mysql -u root 

 

 

5. 비밀번호 초기화

UPDATE mysql.user SET authentication_string='[변경할 비밀번호]' WHERE user='root';

위의 명령문은 Mysql 버전이 8.0.15 이상일때이다! 

 

그 이하의 버전은 따로 구글링을 해보시길...

 

초기화가 성공적으로 완료된다면

 

flush privileges;를 통해 권한을 적용해준다.

 

 

 

그런데,

 

Mysql을 나간 뒤 다시 접속하면 Access Denied가 되었다는 에러가 난다...........뭐야???

 

구글링을 해본 결과, 비밀번호가 암호화되지 않고 db에 저장되어있기 때문이랍니다...

 

SELECT authentication_string FROM user; 을 통해 암호화 되지않은 상태를 확인할 수 있다.(use mysql;을 통해 mysql db를 선택한 뒤!)

 

 

 

6. 다시 접속하여, mysql db 사용하기

 

use mysql; 을 통해 mysql db 사용하기

 

 

 

7. root 계정 비밀번호 null로 바꾸기

 

UPDATE user SET authentication_string=null WHERE user='root';

 

flush privileges;

 

 

 

8. mysql을 나간 뒤 다시 접속하여 비밀번호 변경하기

 

exit;

 

mysql -u root;

 

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '변경할 패스워드';

 

SELECT authentication_string FROM user WHERE user='root'; 를 통해 암호화가 제대로 되었는지 확인 할 수 있다.

 

 

 

 

 

 

참고 자료:

https://bestcoding.tistory.com/5

https://velog.io/@codemcd/MySQL-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%9E%AC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-zxk1qm3y6c

출처:

https://minkyoe.tistory.com/1

 

[Mysql/Mac] root 비밀번호 분실 시 초기화

프로젝트를 진행할 때 매일 RDS에 연결해서 쓴터라 오랜만에 root 계정의 DB에 접속했다. 역시 인간이란 망각의 동물..^^ 비밀번호를 잊어버리고 말았다! 비밀번호를 너무 자주 잊어버리는 탓에..

minkyoe.tistory.com