본문 바로가기

서/버/이/야/기

MySQL 설치후 데몬실행이 안될경우(socket '/tmp/mysql.sock')

MySQL server through socket '/tmp/mysql.sock'라는 에러가 뜰경우

[root@www bin]# ./mysql

ERROR 2002: Can't connect to local MySQL server through

socket '/tmp/mysql.sock' (2)

[root@www bin]#

위 내용은 APM설치후 mysql실행하면, 저렇게 나오는데..
아무리 vi /tmp/mysql.sock 를해도, 안에 아무런 내용이없는데.
저럴때는 어떻게 해야하나요?


---------------------------------------------------------------------------------------

mysql 서버가 실행되어 있지 않아서입니다.

/tmp/mysql.sock 소켓파일은 mysql 실행하시면 생성됩니다...

우선 root 상태에서 아래 명령어를 실행하세요.

[root@www bin]#./safe_mysqld --user=root &

그 다음 ps aux 로 mysql 데몬 정상적으로 실행되었는지 확인하신 다음 접속해 보세요.

참고로 설치하신 mysql버전이 mysql4.x.x 이상이라면..

[root@www bin]#./mysqld_safe --user=root &

요렇게 바뀐것 같던데요...


============================================================================

MySQL 데몬이 활성화 되지 않은듯 싶습니다.

RPM으로 설치 하셨다면

/etc/init.d/mysqld start 하시고

소스로 설치하셨다면 해당 설치 디렉토리에서 데몬 실행파일을 실행해보시기 바랍니다

==============================================================================

"socket '/tmp/mysql.sock' (2)"
위의 에러는 거의 대부분이 data가 들어가는 디렉토리의 권한이 없기 때문에 나타나는 에러입니다.

먼저 user를 추가해주시고요
#groupadd mysql
#useradd -g mysql mysql

그리고 나서 mysql의 데이타가 들어있는 디렉토리를 수정해주세요
#chown -R root "mysql 디렉토리"
#chown -R mysql "mysql의 데이타가 들어있는 디렉토리"
#chgrp -R mysql "mysql 디렉토리"

이렇게 해주세요.


===============================================================================

root@linuxdb mysql]# chown -R root .
이것의 의미를 잘모르세요 발생하신것 같네요.. 저의 불찰이기도 하고요..
제일 뒤에 보이는 .(점)도 필요한부분입니다.
./ <== 현재 디렉토리를 의미하고요
../ <== 앞단계의 디렉토리를 의미합니다.

즉, 만약에 mysql폴더가 /usr/local/mysql/ 이라면
chown -R root /usr/local/mysql/
chown -R mysql /usr/local/mysql/var <== 요기는 데이타가 쌓이는 폴더입니다.
※ 이부분이 않되어있어서 그런같습니다.
chgrp -R mysql /usr/local/mysql/

그럼 성공 하시길.. 즐거운 하루 되세요...

p.s 실행하실때..
mysqld ended 가 나오면 실행이 안된겁니다.
safe_mysqld &<== 요거를 꼭붙이셔서 실행하세요.
이의미는 '백그라운드로 돌려라'라는 의미입니다.
실행하셔서 아무런 반응이 없으면 된겁니다.엔터를 한번더 치셔서 다음명령어를 치시고 계속하시면 됩니다.

=====================================================================================

mysql.sock 은 유닉스 소켓 연결에 사용되는 화일 입니다..
우선 이화일의 위치를 확인 하실 필요가 있습니다..

mysql 의 bin 디렉토리에서

mysql_config --socket

이라고 치면 현재 설정 되어 있는
mysql.sock 화일의 위치가 나옵니다.

그러면 다음과 같이 -S옵션을 주어서 프로그램을 실행해 보세요
./mysqladmin -uroot password '123456' -S/tmp/mysql.sock

/tmp/mysql.sock 에 님의 현재 mysql.sock 위치를 넣으면 되겠죠?

혹시 이렇게 해도 되지 않는 다면

netstat -ap | grep mysql

해보세요
그럼 현재 mysql 서버가 사용하는 유닉스 서버의 소켓과 정보를 보여 줍니다.

만일 소켓 화일이 /tmp/mysql.sock 이 아니라면
netstat -ap | grep mysql
통해 얻은 새로운 mysql.sock 화일의 위치를 가지고 실행해 보세요

mysql.sock 화일의 설정은 php.ini 화일에서 지정 해줄수 있습니다.
php.ini 화일에 보면
mysql.default_socket = 이라는 설정이 있는데
여기에 위치를 지정해주면 됩니다.

====================================================================================