不能通過'/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,該位被設置了。