TIL: Reset Mysql password 삽질기

오늘, 정확히 2시간반 정도 Mysql DB 커넥션을 하기 위헤 엄청난 삽질을 하였다. 결론은 해결했지만, 왜 해결이 됐는지 이해가 안감;;;;

삽질하면서 다음엔 꼭 이런일이 없길 바라며 혹시나 하는 마음으로 TIL로 정리해보려한다.

일단, mysql password를 잊었으면, 백그라운드에서 돌고 있는 mysql server를 끄고, 권한 체크를 패스하는 의미인 --skip-grant-tables를 붙여서 mysql에 접속하여야 한다.

  1. 여기서 첫 번째 삽질은, mysql server가 안죽는다는 것이다…
  • 일단 흔히 구글링해서 나오는 mysql server 죽이기를 해보았었다.

mysql.server가 있는 경로에서 stop 명령어를 입력하면 mysql server가 멈추는데 성공하였다는 문구가 뜬다.

그렇게하고 mysql에 접속하려하면 여전히 패스워드를 입력하라는 말이 나온다..

그래서 지인에게 도움을 요청하니, 지인이 brew로 mysql을 설치했다면, brew에서 mysql.server를 관리해주기 때문에 brew에서 직접 mysql을 멈춰줘야한다고 하더라.

그래서 해결책은

brew services list  // brew에서 관리해주는 리스트를 보여주는 것 같다.
brew services stop mysql    // brew에서 mysql 서버를 죽인다. 

이렇게 약 1시간의 삽질로 mysql server를 완전히 죽일 수 있었다…그렇게 겨우 --skip-grant-tables 명령어로 mysql에 접속할 수 있게 되었다.

  1. server를 죽이고, mysql에 권한 없이 접속한 다음 내 삽질은 syntax error가 발생하는 것이었다…

mysql에 --skip-grant-tables로 접속한 후, mysql 비밀번호를 바꾸는 명령을 시행하는데, 계속 이 오류가 뜨고는 동작하지 않았다.

mysql> use mysql;
mysql> update user set password=PASSWORD("TOOR") where User='root';

위 sql문으로 비밀번호를 바꾸려했지만, 계속 에러가 뜨면서 되지 않았다. 그래서 열심히 구글링하다 거의 40분만에 해결하였다.

mysql> UPDATE mysql.user SET authentication_string=null WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

위 명령어로 해당 이슈를 해결하였다. 문제가 뭐였느냐..하면, 권한없는 상태로 mysql에 접속해서 곧바로 비밀번호를 바꾸는건 불가능한 것 같다. 우선 null로 비밀번호를 바꾼 다음에, root 권한으로 재접속하여 그 때 비밀번호를 셋팅해야 한다.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPasswd';

그렇게 모두 다 해결된줄 알았다.. 마지막 관문이 남아있었다..

  1. 이제 비밀번호도 바꿨고, mysql 접속도 잘 된다. 그런데, mysql connection이 안된다..!!!!

connection이 안되는 이유가 뭔가했더니, 포트번호가 default로 3306으로 맞추어져 있어야 정상인데, 웬일인지 0으로 설정이 되어있었다…

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 0     |
+---------------+-------+
1 row in set (0.07 sec)

대략 이런식으로 되어있었음…..;; 근데 왜 이렇게 되어있는지 모르겠더라….

그래서 진짜 미친듯이 config 파일을 찾아다녔는데, 못찾았었다. 없을 수도 있다 그래서, 없으면 새로 설정파일을 어떤 경로에 생성해서 만들으라는데, 어떤 경로에 해야하는지도 다 다르고, 내부 구조를 정확하게 알 수가 없어서 자포자기 상태에 이르렀다.

그러다가…회의를 다녀오니 포트가 3306으로 연결이 잘되더라…

이건 왜 그런지 이해가 안됐지만…덕분에 도커도 한 번 띄워보고.. 나름 의미있었던 삽질이 아닌가 싶다.

담부턴 비밀번호 절대 안까먹어야지..ㅠㅠㅠ

참고