萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> Can t connect to local MySQL server through socket /tmp/mysql.sock

Can t connect to local MySQL server through socket /tmp/mysql.sock

今天在看一朋友網站時突然發現出來了Can\'t connect to local MySQL server through socket \'/tmp/mysql.sock\'錯誤提示,下面我來總結一下關於出現此類問題的解決辦法

不能通過'/tmp/mysql.sock'連到服務器,而php標准配置正是用過'/tmp/mysql.sock',但是一些mysql安裝方法將

mysql.sock放在/var/lib/mysql.sock或者其他的什麼地方,你可以通過修改/etc/my.conf文件來修正它


首先是mysqld啟動不了,

我通過vim /etc/my.cnf,修改了[mysqld]選項下面的socket的值
socket=/var/lib/mysql/mysql.sock
ok,mysqld可以啟動了

接下來,是mysql啟動不了,同樣,vim /etc/my.cnf,添加了如下腳本:

[mysql]

socket=/var/lib/mysql/mysql.sock

然後,mysqladmin啟動不了,還是一樣,在[mysqladmin]下面socket值設置為同樣的路徑
ok,可以啟動了

最後,用php連接的時候,又出現這個問題了

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我首先想到的是,在/etc/php.ini修改mysql.default_socket的值,在這個文件中,關於mysql.default_socket的

值的說明是這樣的,

; Default socket name for local MySQL connects.  If empty, uses the built-in MySQL defaults.
這個值一開始是空的,也就是說,如果我們不主動去修改的話,php將會使用內建在mysql中的默認值
於是,我修改了這個值,設置為:

mysql.default_socket=/var/lib/mysql/mysql.sock

然後我重新啟動apache,結果無效;reboot系統,結果無效

我火大了,php就非得去連接/tmp/mysql.sock,可是我的系統裡面就是沒有這個路徑下的這個文件,那我就給你鏈

接一個,於是我做了下面的操作,

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


怎樣保護“/tmp/mysql.sock   ”不被刪除

如果你有這個問題,事實上任何人可以刪除MySQL通訊套接字“/tmp/mysql.sock”,在Unix的大多數版本上,你能

通過為其設置sticky(t)位來保護你的“/tmp”文件系統。作為root登錄並且做下列事情:

shell>   chmod   +t   /tmp

這將保護你的“/tmp”文件系統使得文件僅能由他們的所有者或超級用戶(root)刪除。

你能執行ls   -ld   /tmp檢查sticky位是否被設置,如果最後一位許可位是t,該位被設置了。

copyright © 萬盛學電腦網 all rights reserved