Mysql 클라이언트 접속시 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [우분투 리눅스] 문제 해결

우분투 Ubuntu 리눅스 환경에서 테스트용 가상머신에서 Mysql 이 잘 돌아갔는데, 다른 Ubuntu 환경에 들어가보니 MySQL 클라이언트 커맨드가 동작하지 않고

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 에러 메세지를 나옵니다

원인이라 한다면..

mysqld 가 사용하는 socket 파일이 다른 경로 (가령 저의 경우는 /tmp/mysql.sock 에 있더군요) 에 있는데, PHP 나 MySQL 클라이언트 프로그램이 다른경로 에서 찾으려 하기 때문입니다. 그래서 mysqld 와 연결(connect)이 안되는 겁니다.

가장 간단히 해결하는 방법은

mysql 클라이언트 구동시 --socket=/tmp/mysql.sock 을 명시해주는 겁니다.

$mysql -u root -p --socket=/tmp/mysql.sock 이라고 실행하면

강제적으로 소켓파일을 원하는 디렉토리에서 만들도록 해줍니다.

참고로PHP로 MySQL 연동시 위와 같은 Can't connect to local MySQL server through socket  에러가 발생하면

$conn = mysql_connect("localhost:/tmp/mysql.sock","db_user","db_passwd");

C API 로 MySQL 연동시 위와 같은 Can't connect to local MySQL server through socket  에러가 발생하면

mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT, "/tmp/mysql.sock", 0);

와 같이 소켓을 명시적으로 지정해주면 됩니다.