평생 윈도우만 사용하던 사람에게 맥은 너무 가혹하다.
자잘한 불편함을 하나씩 나열할 수는 없지만, 당장 가장 어렵게 느껴지는 영역은 바로 터미널을 이용해 이것저것 실행하는 것이다.
얼마 전 기본 터미널 대신 iTerm2를 사용하기 시작했다.
개발 환경을 갖추기 위해 zsh도 설치하고, 가독성을 높이려고 개인 옵션도 몇 개 추가했다.
이제 꽤 익숙해졌다고 생각했는데, 오늘도 시련이 찾아왔다.
오늘은 워크벤치를 이용해 서버에 새로운 유저를 추가하는 법을 시작으로 터미널을 이용해 서버에 접속하는 등 기본적인 사용 방법에 대해 배웠다.
문제는 내가 무의식적으로 '새로운 유저를 생성한다. 그리고 서버에 로그인한다'로 이해한 것이다.
오늘 만들어본 서버의 이름은 myDB다. 접속하기 위해 터미널에 명령어 mysql -u myDB -p 를 입력하고 실행을 하니,
비밀번호를 입력하라고 한다. 보안이 필요한 서버에 접속하려는 것이니 당연히 비밀번호가 필요하겠다고 생각했다.
문제는 비밀번호를 틀림없이 제대로 입력했는데도 에러 메시지가 튀어나왔다는 것이다.
비밀번호가 잘못된 경우에는 아래처럼 다른 에러 메시지가 출력된다.
'접속 거부됨'이라는 말과 함께 비밀번호를 사용중임을 보여준다.
그렇다면 원인은 알 수 없는 무언가로부터 비롯되었다는 뜻이다.
우선 에러 메시지를 그대로 구글에 검색해 보니, native_password란 MySQL의 구버전(8.x 이전)에서 사용하던 암호화 방식이다.
해시코드를 알면 비밀번호를 확보할 수 있다는 취약점이 있어 현재는 caching_sha2_password로 변경되었다.
출처: https://minsql.com/mysql8/C-2-A-authentificationPlugin/
MySQL 8.0 - Authentication_plugin 의 변경
개요
minsql.com
이제 무엇이 문제인지 알았으니 해결해볼 시간이다.
첫 번째 시도: native_password 플러그인 실행하기
MySQL은 my.cnf 라는 텍스트 파일을 통해 설정을 관리한다.
이 파일을 열어 [sqld] 소제목 아래에 default_authentication_plugin=mysql_native_password 구문을 추가해 주었다.
하지만 터미널에서도 해당 플러그인은 계속 비활성화된 상태로 남아있었고, 워크벤치에서도 암호화 방식을 바꿀 수 없었다.
결론은 실패.
두 번째 시도: MySQL 재설치
하드웨어는 재부팅, 소프트웨어는 재설치가 문제를 해결하는 경우가 많지 않은가?
터미널에서 각종 brew 코드를 이용해 MySQL을 디렉토리까지 전부 삭제한 다음 재설치했다.
결론은 여전히 실패. 위와 같은 에러 코드 1524가 계속 출력되었다.
세 번째 시도: 뻘짓을 했음을 깨닫고 성공
곰곰히 생각해보니, 오늘 설치한 MySQL은 최신 버전이었다. 게다가 구버전은 전혀 사용한 적 없는 새 PC에 설치한 것이었다.
그렇다면 결론은 native_password의 문제도 아니요, MySQL의 잘못된 설치에서 비롯된 것도 아니라는 것이었다.
혼자서는 해결하지 못할 것 같아 부트캠프의 채팅방에 질문을 올렸더니, 친절하신 수강생 한 분이 그야말로 우문현답을 제시해주셨다.
그렇다. 원인은 터미널에 입력한 코드에 있었다.
오늘 만든 서버의 이름은 myDB, 생성한 계정은 java였다.
그리고 내가 입력한 코드에는 계정이 들어가야 할 자리에 서버의 이름이 떡하니 자리잡고 있었다.
이런 실수는 남의 집 문을 잘못 두드리며 열리길 바라던 것 수준이다. 아니, 남의 집 벽을 두드리면서 왜 안열리는지 고민하던 셈이다.
결과는 성공. 터미널 코드에 서버 이름 대신 계정 이름을 제대로 넣으니 비로소 접속할 수 있었다.
오늘도 새삼 배울 것이 너무 많고, 나는 아무것도 모른다는 것을 느낀다.
* 큰 도움을 주신 동료 수강생분께 깊은 감사의 말씀을 올립니다.