mysql,mysqldump,mysqldump,php連線mysql服務常會提示下面錯誤:
產生此問題的原因一般有兩個:
1、mysql服務未正常執行:
由於mysql的socket檔案是由mysqld服務啟動時建立的,如果mysqld服務未正常啟動,socket檔案自然也不會被建立,當然會找不到socket檔案了。對於判斷mysql服務是否啟動,我們可以使用下面命令:
2、socket檔案路徑在配置檔案中設定不完整:
這一般是由於我們修改了mysql配置“/etc/my.cnf”引起的。比如我們修改了配置檔案中“[mysql]”選項下的“socket”引數,而未指定“[client]”、“[mysql]”選項的“socket”引數,導致mysql使用預設的socket檔案位置去尋找socket檔案,從而導致未找到socket檔案而引發此錯誤。
解決辦法:
下面是解決方法,更詳細的介紹可以參考:http://aiezu.com/article/mysql_cant_connect_through_socket.html
1、mysql服務未正常執行:
如果是服務未啟動,我們執行“service mysqld start”啟動服務即可。如果服務啟動不了,就去檢視mysql服務日誌,尋找原因並解決再啟動
2、完善mysql配置檔案:
如果確認mysql服務正常執行,還提示文章標題的此錯誤,那就是“/etc/my.cnf”配置檔案的問題了。解決辦法是修改“/etc/my.cnf”配置檔案,在配置檔案中新增“[client]”選項和“[mysql]”選項,並使用這兩個選項下的“socket”引數值,與“[mysqld]”選項下的“socket”引數值,指向的socket檔案路徑完全一致。如下:
其中socket等於的路徑就是socket檔案的位置,我們只要修改my.cnf檔案,告訴mysql,mysqldump,mysqladmin等命令,mysql服務的socket檔案位置在哪裡,然後重啟mysqld服務即可。
3、php連線mysql服務提示”Can`t connect to local MySQL server through socket…”的解決方法
有時候mysql服務正常執行,使用者名稱密碼也完全正確,使用php的mysql_connect函式卻連線不了mysql,呼叫php的mysql_error()函式提示“Can`t connect to local MySQL server through socket `/var/lib/mysql/mysql.sock`”,這是我們需要修改/etc/php.ini檔案。
在/etc/php.ini檔案中”[MySQL]”項下找到”mysql.default_socket”,並設定其值指向正確的mysql服務socket檔案即可,如:
4、python連線mysql提示”Can`t connect to local MySQL server through socket…”的解決方法:
在連線mysql資料庫函式中指定socket檔案,如下:
5. php pdo連線mysql提示”Can`t connect to local MySQL server through socket…”的解決方法:
同樣在連線字串新增mysql socket檔案的位置即可,如下:
>
>
>