MySql # execute error

kdobro_dev·2022년 3월 9일
0

Error Handling

목록 보기
2/6
post-thumbnail

📝오늘 배운 내용

어제 mysql 관련된 sprint 진행 중 mysql 설치를 하고 part-3 테스트를 통과했다. 스케줄에 맞춰 오늘은 다음 테스트인 part-4를 통과하기 위해 테스트를 돌려봤지만 계속 데이터베이스가 연결이 안되어 있다는 에러가 나왔다..데이터베이스는 생소하기 때문에 도대체 뭐가 문제인지 확인하기에 굉장히 오랜시간이 걸렸고 꽤 힘든시간을 보냈다. 계속 연결이 안된다는 에러가 나기에 mysql 재접속을 반복하던 중 갑자기 접속이 안되었다.

처음에는 이러한 에러가 발생했다. 구글링을 해보니 mysql.sock 관련 에러는 원인이 굉장히 다양하다고 한다.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

  1. mysql 데몬이 기동 되어 있지 않은 경우 (서버 실행 X)
  2. my.cnf 파일이 깨졌을 경우
  3. mysql.sock 파일을 못 찾거나 경로가 정확하지 않은 경우

해결방안으로는 mysql.sock의 위치를 찾은 후 정확한 경로의 해당 파일을 실행 시켜주는 것이였다.

find / -name mysql.sock

나의 경우 위에 명령어로는 mysql.sock을 찾을 수 없어서 아래와 같은 명령어로 해결했다.

mysql_config --socket

mysql.sock이 /tmp에 속해 있다는 것을 찾았다. mysql.sock이 위와 같은 경로에 위치하고 있기 때문에 my.cnf파일 안에 내용을 위와 같은 경로로 수정해줘야 한다.

sudo vi /etc/my.cnf // sudo를 입력해줘야 파일을 수정하고 저장할 수 있다. 미입력 시 읽기만 가능

참고로 vi로 접속하면 키보드 i(insert)를 눌러야 입력이 가능하다. 수정 후 esc키를 누르고 :wq!를 입력하면 저장이 된다.
이제 해결이 다 되었다고 생각해 mysql -u root -p를 입력해보니 이번엔 또 다른 에러가 발생되었다..

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

mysql 접속 시 비밀번호를 설정해뒀는데 비밀번호가 맞치 않다는 뜻이었다. 분명 정확히 했다고 생각했는데 여러번 만지다 보니 꼬인 것 같다. 이번에도 구글링을 해보고 간신히 해결 할 수 있었다.

  1. /etc/my.cnf 파일을 열고 수정한다.
  2. [mysqld] 아래에 skip-grant-tables 명령어를 입력한다. (안전모드로 접속하는 방법)
  3. mysql을 재시작 한다. (brew services restart mysql)
  4. mysql -u root -p로 접속한다.
  5. mysql 접속한 상태로 flush privilege를 입력한다. (변경사항 즉시 반영)
  6. ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW PASSWORD';
  7. 다시 /etc/my.cnf 파일로 돌아가서 skip-grant-talbes를 지우고 저장한다.
  8. mysql을 재시작한다. (brew services restart mysql)
  9. 다시 mysql -u root -p로 접속하면 정상적으로 접속이 된다.

위 모든 상황이 동작되지 않을 때 Homebrew를 지웠다 다시 깔아야 한다.

참고

profile
do your best at any moment

0개의 댓글

관련 채용 정보