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);
와 같이 소켓을 명시적으로 지정해주면 됩니다.