Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

블로그 이름 뭐하지

[트러블슈팅] MySql 비밀번호를 잊어버렸을 때 & MySql 재설치 본문

트러블슈팅

[트러블슈팅] MySql 비밀번호를 잊어버렸을 때 & MySql 재설치

가는말이고우면오는말은come 2024. 9. 26. 15:03

참고한 링크

 

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

업무용 pc에 이전 사람이 설치한 mysql을 그대로 쓰다가 root 권한이 필요한데 몰라서 초기화하기로 했다. 그냥 다 지우고 새로 깔아도 되긴 하지만 초기화하기로 했다. 삽질 기록을 노션에 기록해

datamoney.tistory.com

 

 

문제 발생

어제까지 잘 쓰던 root 비밀번호를 틀렸다.

mysql client에서 비밀번호를 쳤는데 계속 창이 없어지길래 cmd로 들어갔더니 아래 에러를 띄웠다.

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

참고로 어제는 해당 에러가 뜨기에 확인했더니 포트번호의 문제였다.

(3306이 기본으로 설정되어 있어야 하는데, mysql이 3310으로 설정됨)

설마하고 확인했는데 port는 3306으로 얌전히 설정되어 있었다.

이후 root 비밀번호를 확인했는데 기입한 것이 틀렸다고 한다.

어제 설정한 건데 내가 치매거나, 해킹 당하지 않는 이상 틀릴 수가 있나 싶었지만,

의문을 제기해도 상황이 바뀌지 않으니 방법을 찾아야 했다.

 

 

문제 해결

SQL을 다시 설치하는 방법도 있겠지만, 구글에서 찾은대로 초기화를 해보기로 했다.

 

1. 서비스 앱 > MySQL  우클릭하여 중지 및 재실행

 

 

2. mysqld --initialize --console 기입하여 초기화

이때 sql이 설치된 경로에 data 파일이 남아있으면 오류가 생기므로 삭제 후 초기화 해야한다.

나는 sql 데이터가 없어서 바로 초기화가 가능했다.

 

3. mysqld --skip-grant-tables --console --shared-memory 기입하여 인증 생략& 서버 공유메모리로 접속

 

4. 새로운 관리자 cmd창을 띄워 mysql -u root 로 접속

여기서 중요한 점은 위의 인증 생략 창을 끄지말고 새로운 창을 띄워야 한다는 것이다.

끄게 되면 ERROR 1045 (28000): Access denied for user 'root@'localhost' (using password: NO) 가 뜨며,

비밀번호를 재설정하기 위해 잊어버린 기존의 비밀번호를 입력해야하는 말도 안되는 상황이 벌어진다.

 

5. use mysql을 기입하고,

UPDATE user SET authentication_string=null WHERE user='새로운 비밀번호'; 를 기입해 비밀번호를 재 설정.

UPDATE mysql.user SET password=PASSWORD(새로운 비밀번호) WHERE user='root';

query Ok, 0 row affected(0.00 sec) Rows matched : 0 Changed: 0 이 떠도 일단 오류만 뜨지 않으면 괜찮다.

 

6. 모든 창을 다 닫고 cmd를 다시 켜서 재설정한 비밀번호로 접속

성공!!!!!!!!!!!!!!!!!

인줄 알았으나, 바로 다음날 동일한 문제 발생.

대체 뭐가 문제냐.*********

 

컴퓨터를 재부팅하면 동일한 상태로 돌아가는 문제가 발생했다.

튜터님과 약 1시간 가량을 씨름했지만, 근본적으로 해결하려면 mysql을 새로 설치하는 방법 뿐이라는 최종판결을 받고 터덜터덜 재설치를 하러 갔다.

 

그런데 재설치 이후로도 비밀번호가 재설정이 되지않고 기존 비밀번호를 입력하라는 창이 떴다.(환장)

(좌) 원래 떠야하는 창 (우) 지금 내가 뜨는 창

 

기존의 데이터가 남아있는 모양이라 제어판에서 mysql관련 앱 전체 삭제하고,

pc > program files, program files(x86) 폴더에 남아있는 mysql 폴더도 전체 삭제하고, 검색을 돌려 sql이 남아있는지 확인후 설치했는데도 동일했다.(대환장)

 

대체 어디 데이터가 남아있는거지 생각했는데 의외로 쉬운 곳에서 답을 찾았다.

재설치 경로를 설정하는 창이다. 가장 하단에 뜬 경고 메세지를 보면,

The selected path already exists. >> 해당 경로에 이미 동일한 파일이 있다는 뜻이다.

폴더를 확인해보니 ProgramData라는 곳에 mysql의 잔당이 남아있었다.

 

로컬디스크(C:)에 후다닥 달려갔더니 ProgramData라는 파일은 없었다. (당연하게도)

이때는 상단의 보기 > 숨긴 항목 체크 하면 숨겨진 파일이 나타나게 된다.

ProgramData파일을 찾아 MySQL을 삭제했다.

 

그리고 다시 재설치를 했더니, 마침내!!! 마침내!!!! 비밀번호 생성창이 띄워졋다.

지정된 비밀번호가 잘 작동한다

 

무척 간단한 일이었는데도 머리가 나빠 굉장한 대장정을 했다.

다음에는 이런 일이 벌어지지 않길 바라며, 기존의 데이터들을 다시 작성하러 간다.

'트러블슈팅' 카테고리의 다른 글

[트러블슈팅] 더미데이터 만들어 조회하기  (0) 2024.12.30