MySQL 설치 중 만난 ERROR 1045 (28000)

Somi Jeon·2022년 3월 5일
1
post-thumbnail

문제의 발단

  1. MySQL 설치를 완료하고 mysql -u root Enter를 통해 비밀번호가 없는 root 계정을 생성했다. 만약 mysql -u root -p를 입력하면 계정 생성과 동시에 임의의 패스워드를 입력하고 나중에 변경 가능하다.
brew install mysql // 설치
brew services start mysql // 서비스 시작
mysql -u root // 비밀번호 없이 로그인

  1. 'root-password' 자리에 패스워드를 지정했는데 mysql>을 한번 exit한 이후로 다시 sql 서버에 들어가려고 할 때마다 root에 접근이 거부되는 헬이 시작되었다.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password'; // root-password 대신에 각자의 비밀번호 입력

  1. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 의 발생 이유는 지금 와서 보니 알 것 같다. 지정한 비밀번호가 존재하면 무조건 mysql -u root -p로 접속해야 하는데 -p를 포함하지 않은 것이다.

  1. 그래서 -p를 넣었는데 Enter password:에서 비밀번호가 잘 지정된 건지 확신이 서지 않아 그냥 엔터를 눌러보았다. 그런데 에러가 떠서 이번엔 지정한 비밀번호를 눌렀는데도 using password: 부분에 No YES만 다른 ERROR 1045
    (28000)가 또 나타났다.

  1. 에러메세지를 구글링해서 이런저런 냅다 복붙해 가면서 문제를 해결하려고 했는데 그 과정에서 1045 다음으로 많이 만난 사람 미치게 하는 에러메세지는 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 였다.

  1. 검색해보니 이 경우는 mysql이 설치는 되었는데 작동이 되고 있지 않을 때 나타나는 메세지라고 한다. brew services start mysqlmysql.server start로 서버를 열어야 한다.

문제 해결

  1. 결국 문제는 root에 접속할때 비번 없이 엔터를 치든, 맥북 로그인 비번을 치든, 내가 지정한 특수문자가 포함된 엄청 복잡한 비번을 치든 무조건 접근이 거부되는 상황이었다. (아무래도 오타가 있었던 것 같다.) 나는 분명히 비번을 지정하긴 했기 때문에 에러메세지로 구글링 하던 것을 mysql root password lost 쪽으로 노선변경했다.

  2. --skip-grant-tables의 발견: 이 옵션을 입력하면 계정 관리에 관련된 SQL 명령들을 실행하지 않는다. 그래서 보통 root의 사용자 비번을 잃어버렸을 때 비번 없이 데이터베이스 서버에 접속하기 위해 사용된다. 그래서 mysql.server start --skip-grant-tables를 입력해 서버를 열었다.

  1. 그리고 비번없이 계정에 접근하는 mysql -u root를 입력했더니 드디어!!! Welcome to the MySQL monitor라는 문구를 만나게 된다.

  2. 그리고 이번에는 엄청 쉬운 비번을 지정하려고 ALTER USER 커맨드를 쳤더니 또 다시 나를 어택하는 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement ㅠㅠ.. 읽어 보니 현재도 --skip-grant-tables가 걸려있어서 커맨드를 실행할 수 없다는 것이었다.

  1. 이 옵션을 해제하는 방법은 FLUSH PRIVILEGES이다. 그리고 나서 다시 비번 변경하는 커맨드 입력했더니 Query OK! exit으로 나가고 재접속을 시도해 봤다.

  2. 다시 말하지만 비번이 있다면 mysql -u root 다음에 -p를 잊지 말자. 그럼 ERROR 1045 (28000) 또 뜬다! 이제 비번 입력하면 무사히 MySQL에 잘 접속되고 실행되는 걸 볼 수 있다.

마치며...

처음에는 문제가 어디서부터 시작되는지 감이 안 왔다. 그래서 에러메세지만 구글링해서 답변들이 다 영어니 피곤해서 제대로 읽지도 않고 우선 복붙해서 다 쳐봤다. uninstall/install도 세 번은 한 것 같다. 왜 그렇게 해결하는지를 이해하려고 한 것이 아니라 운좋게 하나만 걸려라 이런 마인드였다. 근데 그렇게 2시간을 고생하고도 안 풀렸을 때, 다시 제일 처음으로 되돌아가 문제가 뭐였지? 되짚어봤다. 패스워드를 안 입력해도, 틀릴 리 없는 맥북 비번을 입력해도, 긴 비번을 입력해도 답이 없을 때는 나의 비번 설정 오류를 의심했어야 했다. 그래서 검색의 방향을 바꾸니 문제가 풀렸다. 앞으로는 무작정 에러메세지만 검색하지 말고 그 전후 상황을 이해하고 검색어를 구체적으로 설정하고 그 설명들도 주의깊게 읽어보면서 가져다 써야겠다.

profile
기록의 힘

0개의 댓글