MySQL 루트 패스워드를 잘못 변경했다.
그래서 패스워드를 리셋하려고 구글링을 해서 이런 답변을 얻었다.
Reset MySQL 8.0 root Password in Windows
Reset MySQL 8.0 root Password in Windows. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
일단
1. mysql 서비스를 모두 종료한다.
2. 명령 프롬프트를 관리자 권한으로 실행하고
3. C:\Program Files\MySQL\MySQL Server 8.0\bin 경로로 들어가서
4. mysqld --console --skip-grant-tables --shared-memory
를 하면 된다는데 안된다.
No such file or directory란다.
*** 실선 안에 있는 건 따라하지 마세요. 삽질의 기록입니다. ***
다시 구글링해서 mysqld --initialize 라는 명령어를 얻었다.
했더니 C:\Program Files\MySQL\MySQL Server 8.0에 data라는 폴더가 새로 생겼다.
이후 위에서 시도한 mysqld --console --skip-grant-tables --shared-memory를 다시 입력한다.
그리고 새로 명령 프롬프트를 띄워서 패스워드 없이 mysql에 접속을 시도한다.
- mysql -u root
- select authentication_string,host from mysql.user where user='root'; // 패스워드가 있는지 확인
- UPDATE mysql.user SET authentication_string='' WHERE user='root'; // 패스워드를 삭제함
여기까지 했으면 터미널 두 개를 다 닫고 다시 작업관리자-서비스에서 MYSQL80을 실행한다.
그러면 이제 될 것 같지? 노노 천만의 말씀 만만의 콩떡(천부당만부당)이다!
다른 데이터의 패스워드를 바꾼 거라서 원래 있던 데이터는 여전히 로그인이 안 되고 먹통이다.
결국
1. 아까 생긴 C:\Program Files\MySQL\MySQL Server 8.0\data 폴더를 삭제하고
2. 작업관리자-서비스에서 MYSQL80을 다시 중지한다.
3. 명령 프롬프트를 관리자 권한으로 다시 켜서
4. mysqld --console --skip-grant-tables --shared-memory 뒤에 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" 를 붙여서 입력.
5. 그리고 새로 명령 프롬프트를 띄워서 패스워드 없이 mysql에 접속을 시도한다.
5-1. mysql -u root
5-2. select authentication_string,host from mysql.user where user='root'; // 패스워드가 있는지 확인
5-3. UPDATE mysql.user SET authentication_string='' WHERE user='root'; // 패스워드를 삭제함
여기까지 했으면
6. 터미널 두 개를 다 닫고
7. 다시 작업관리자-서비스에서 MYSQL80을 실행한다.
그리고 대망의 마지막
alter user 'root'@'localhost' identified with mysql_native_password by 'password'; |
password 부분을 원하는 새 비밀번호로 입력하고 엔터를 땅 하면!
할렐루야!