Error 2002 hy000 : cant connect to local mysql server through socket /tmp/mysql.sock 2

Linux 계열 서버에 MySQL을 설치 한 후에,

MySQL 서버에 접속할 때 아래와 같은 오류를 출력하며 서버 접속이 안될 때 처리하는 방법입니다.

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

인터넷을 찾아보니 이런 이유들이 있더라구요.

1. 권한 문제 - 저는 root 계정으로 접속하여 실행했기 때문에 패스했습니다.

   → mysql.sock 파일이 있는 디렉토리 소유 권한이 없어 접근이 불가능한 상태입니다. root 계정으로 접속하여 실행해보세요. 또는, chmod와 chown 명령어를 통하여 권한을 변경하여 사용하시면 됩니다.

2. mysql.sock 파일의 경로 문제

   심볼릭 링크를 만들어 사용하시면 됩니다. 'mysql.sock 파일의 심볼릭 링크'로 검색하시면 금방 찾으실 수 있어요.

3. mysql이 설치된 볼륨 사용량이 100% 여서 발생하는 문제

  → df -h 명령어를 이용하여 볼륨에 여유공간이 있는지 확인하고, 여유공간이 없다면 불필요한 파일을 삭제 후 서비스 재시작 하면 정상적으로 처리 됩니다.

4. MySQL이 실행되지 않아서 발생하는 문제

  → 'service mysqld start' 라는 명령어를 통하여 MySQL을 서버 데몬을 실행 후 접속하면 정상적으로 접속 됩니다.

위 경우의 수 보다 더 많은 이유로 에러가 발생할 수 도 있겠지만,

많이 발생하는 경우의 수로 작성하였습니다.

위의 오류들 중 가장 많이 발생하는 경우의 수는 1번과 4번으로 예상합니다.

rpm을 통하여 설치할 경우 권한이 없게 설정 되는 것으로 알고 있어 이런 에러가 많이 발생하기도 합니다.

그리고, MySQL을 설치하고 실행하지 않고 접속하는 경우도 종종 발생하더라구요.

저도 이번에 설치하면서 실행하지 않고 접속해서 에러가 발생하였습니다. 

다음에는 더 좋은 정보로 찾아오겠습니다. 

그럼 저는 이만.

[문제해결] mysql 접속에러

1. 문제상황

> 다음과 같은 에러가 발생하였다.

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

2. 해결과정

> my.cnf 파일의 옵션을 확인한다.

vi /etc/my.cnf ## /etc/my.cnf [client] socket = /var/lib/mysql/mysql.sock [mysqld] socket = /var/lib/mysql/mysql.sock

> /var/lib/mysql/mysql.sock 파일의 심볼릭 링크를 만든다.

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

일단 시작해보는 블로그

개발/Mysql

[Mysql] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 에러

Selina Park 2019. 10. 16. 01:00

잘 되던 mysql에 접속했는데 갑자기 다음과 같은 오류가 생겨서 실행이 안됐다....

parkjinsun:~ jinsun$ mysql -uroot -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

왜 생겼을까 이런 오류..

mysql.sock?

unix/linux 의 디렉토리 구조상 임시 저장 directory인 /tmp에서 mysqld가 start 상태일 때 생성되었다가 stop상태일 때는 지워지는, mysqld(mysql의 서버 프로그램) 과 mysql(mysql 클라이언트 프로그램)이 같은 컴퓨터에서 통신할 때 파일을 사용하여 통신하는데 이때 사용되는 파일이다. (mysql.sock, 이런 파일을Unix Domain Socket이라고 한다.)

mysql 서버 프로그램(데몬, mysqld)과 클라이언트 프로그램(mysql, 또는 php의 접속 루틴)은 서로 다른 프로세스이다.

당연히 mysql이라는 완성된 프로그램이 실행될 때 mysqld와 mysql 사이에서 통신이 이뤄져야한다.

mysqlTCP/IP 소켓(주로 mysqld와 mysql이 다른 컴퓨터에 있을 때 사용하는 통신 방법, 이때 포트는 보통 3306)과 Unix Domain Socket(같은 컴퓨터에 있을 때는 보통 TCP/IP보다 이것을 사용한다) 둘 다 사용할 수 있다.

TCP/IP 소켓이 IP주소와 포트를 이용해서 통신을 하듯 Unix Domain Socket는 파일을 이용한다. 이때 mysql.sock은 이런 용도로 사용되는 파일이다.

따라서 mysqld를 실행시켰을 때는 mysql.sock파일이 있지만, 중지시키면 이 파일은 사라지게 되는 것.

나의 해결책 

이것저것 다 해봤지만 .... brew를 통해서 설치했기 때문에 몇번을 지웠다가 다시 설치해봤지만.........! 해결이 안되더니.. mysql 설정파일을 깔끔히 지워주니 해결이 됐다!..제발 앞으로는 잘됐으면 좋겠는데 하하..

1. mysql이 실행되고 있다면 stop 시켜야한다.

parkjinsun:bin jinsun$ brew services stop mysql Stopping `mysql`... (might take a while) ==> Successfully stopped `mysql` (label: homebrew.mxcl.mysql)

2. 완벽히 삭제한다.

parkjinsun:bin jinsun$ brew uninstall mysql Uninstalling /usr/local/Cellar/mysql/8.0.18... (293 files, 280.9MB) parkjinsun:bin jinsun$ rm -rf /usr/local/var/mysql parkjinsun:bin jinsun$ rm /usr/local/etc/my.cnf

3. brew를 통해서 재설치한다.

parkjinsun:bin jinsun$ brew install mysql

4. mysqld를 start한다.

parkjinsun:bin jinsun$ mysql.server start Starting MySQL . SUCCESS!

5. mysql 클라이언트를 실행시킨다. 

(드디어 예쁜 mysql> 이 나와줘서 나는....너무 기뻤다..............고마워....하........)

parkjinsun:bin jinsun$ mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.18 Homebrew Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

[출처]

//sysadm.kr/9

Toplist

Neuester Beitrag

Stichworte