묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
저희 회사 홈페이지 에러가 납니다. 도와주세요!!
2004.02.13 22:24
전문적으로 관리하는사람이 없어서 손을 못쓰고 있습니다.
아래주소로 가보시면 아시겟지만 모든 게시판을 들어가면
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/html/inc/common.inc on line 8
이러한 메세지가 뜨는데 무엇이 잘못된건지
어떻게 대처해야 하는지 답변주시면 정말 감사드리겠습니다.
꼭좀 답변 부탁드립니다.
참고로 리눅스 서버를 사용하고 있습니다.
http://www.mobens.com/services/frm_ser_qa.html
아래주소로 가보시면 아시겟지만 모든 게시판을 들어가면
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/html/inc/common.inc on line 8
이러한 메세지가 뜨는데 무엇이 잘못된건지
어떻게 대처해야 하는지 답변주시면 정말 감사드리겠습니다.
꼭좀 답변 부탁드립니다.
참고로 리눅스 서버를 사용하고 있습니다.
http://www.mobens.com/services/frm_ser_qa.html
댓글 4
-
플로렐라
2004.02.13 23:46
-
이진우
2004.02.14 00:08
답변 감사드립니다.
그럼 mysql을 다시 설치해 볼까요? -
하얀피
2004.02.14 00:54
플로렐라님께서 모호한 답을 내려주셨네요..
일단 위 메세지의 문제점으로 많은 초보관리자가 고생을 합니다.
이곳저곳 검색해봐도 MySQL 데몬이 죽어있는것이 아니냐는 답을 듣는데
ps -ef | grep mysql 해보면 데몬이 주루룩 출력되는것을 볼 수 있죠.
이거 참 처음 겪을땐 몸에서 피 마르는듯 싶죠. 바쁜서버라면 더더욱 말할 필요도 없고요.
권한 문제가 아니라는것을 전재하에 설명드리겠습니다.
mysql.sock은 /tmp 아니면 /var/lib/mysql에 생깁니다.
후자의 경우 /var/lib/mysql에 mysql.sock파일이 존재하는데
PHP에서는 /tmp에서 mysql.sock를 찾으려하니 에러를 발생시키는거죠.
이런 경우 /usr/bin/safe_mysqld파일에서 다음과 같이 수정하시면 됩니다.
주석(#)이 달린 것이 원본이고 그 밑에 있는것이 수정해야할 내용입니다.
# MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/var/lib/mysql/mysql.sock}
MYSQL_UNIX_PORT=${MYSQL_UNIX_PORT:-/tmp/mysql.sock}
위와 같이 하면 PHP는 해결되는데 이젠 MySQL 데몬이
/var/lib/mysql/mysql.sock에서 소켓파일을 찾으려 하지요.
이럴때는 socket file을 지정하는 --socket이라는 옵션으로 다음과 같이 지정하면 됩니다.
mysql --socket=/tmp/mysql.sock -u db -p db
하지만 mysql실행시마다 이렇게 써줘야한다는 것은 상당히 귀찮은 일이죠.
그럼 옵션이 바로 적용되게 설정하는게 정답이 되겠죠.
mysql은 설정사항을 다음 3가지 파일에서 검색합니다.
/etc/my.cnf global options(MySQL 전체적으로 사용되는 옵션)
mysql-data-dir/my.cnf 특정 DB에 적용되는 option (/var/lib/mysql/my.cnf)
~/.my.cnf 사용자 각각의 설정('~'문자는 사용자의 홈디렉토리를 의미)
/usr/share/mysql디렉토리에 예제 파일이 있으므로 참고하시면 됩니다.
소켓파일의 지정은 다음줄을 넣어주세요.
socket = /tmp/mysql.sock
== /etc/my.cnf예 ==
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
이정도만 해주시면 해결되실듯 보입니다.
약간 더 덧붙이자면..
저같은경우 아예 mysql configure시에..
--with-unix-socket-path=/tmp/mysql.sock 옵션을 넣어줍니다. -
이진우
2004.02.14 01:05
정말 감사합니다. 이리도 친절 하실 수가..ㅜ_ㅜ
내일 당장가서 해보겠습니다. 다시한번 감사드립니다!!
디비 데몬이 죽은게 아닐까요?
살리는 방법은... 잘...;