[MySQL] Access denied for user ‘root’@’localhost’

배경 :

  • MariaDB와 MySQL 둘 다 사용하여 link, unlink 하며 사용

  • MySQL 도 버전에 따라 5.7, 8 변경해가며 사용

  • 갑자기 MySQL 서버에 접속할 때 접근 권한이 뜸

  • 삭제 후 재설치 반복했지만 해결 안됨.

에러 메시지 :

The designated data directory /opt/homebrew/var/mysql/ is unusable. 
You can remove all files that that the server added to it.

해결 :

/opt/homebrew/var/mysql 삭제 후, brew postinstall 해주니 해결되었다.

원인 :

  • 처음에는 계속 락 걸렸다고 로그에 나왔다. 근데 PID 다 죽여도 해결이 안됐다.

  • 원인은 경로 문제인 걸로 추정된다.

    • /usr/local/mysql/bin
    • /opt/homebrew/var/mysql

    m1이라서 후자를 삭제하고 postinstall 하니 해결되었다.

시도했던 방법 :

1️⃣ 첫 번째 시도

현재 실행중인 MySQL PID 모두 kill

InnoDB: Unable to lock ./ibdata1 error: 35

2️⃣ 두 번째 시도

ERROR! The server quit without updating PID file

3️⃣ 세 번째 시도

MySQL 비밀번호 재설정

MySQL Error: Access denied for user ‘root’@’localhost’
  • 비밀번호를 재설정 해주었지만, 계속해서 같은 에러 메세지가 떴다.

  • Ref

    • https://it-mesung.tistory.com/135

      • 여기랑 두 번째 시도에서 힌트를 많이 얻었다.

      • cd /usr/local/mysql/bin
        ./mysql -u root
      • 이 부분을 실행하려고 해도, 아무리 뒤져도 /usr/local/mysql/ 경로가 없어서 혹시나 설치 경로 문제가 아닐까 생각했다.

      • 그리고 그게 맞았다..

0️⃣ 옛날에 했던 시도 1

Error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • brew uninstall mysql
    brew cleanup
    sudo rm -r /usr/local/var/mysql
    brew install mysql 
[ERROR] unknown variable 'mysqlx-bind-address=127.0.0.1' 

회고 :

  • 위 과정은 하루만에 진행됐지만, 실상 굉장히 오랫동안 원인을 찾지 못해 해결하고 있지 못한 에러였다.

  • MySQL 설정 경로문제였다.

  • 별의별 짓은 다 한 것 같다. 지금 생각해보면 간단한데, 왜 그렇게 해결하기가 어려웠는지 모르겠다. 다음부터는 에러 메세지를 더 잘 읽고 원인 및 문제가 뭔지 지금보다 더 논리적으로 접근해야겠다. 이번에는 영어도 그렇고 감으로만 이렇겠다 저렇겠다 시도해보기만 하고, 원리를 꼼꼼히 따져보지 못한 것도 있는 것 같다.

  • 문제 해결 과정도 잘 문서화 해놓아야겠다.

Last updated