1. 程式人生 > >啟動mysql遇到問題Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

啟動mysql遇到問題Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

是否 timeout 包括 ets 遇到 ini tmp 服務器 3.2

在mysql的啟動過程中有時會遇到下述錯誤

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


請問mysql.sock 這個文件到底起什麽作用? 如何避免發生如此錯誤?
答案一、 這個mysql.sock應該是mysql的主機和客戶機在同一host(物理服務器)上的時候,使用unix domain socket做為通訊協議的載體,它比tcp快。通常遇到這個問題的原因就是你的mysql server沒運行起來。 看看你的 /tmp/mysql.sock 這個文件存在否?正常情況下它應該在那裏的,或者用 netstat 看看結果中是否有
Active UNIX domain sockets

答案二、 這個文件是用於socket連接的文件。
也就是只有你的守護進程啟動起來這個文件才存在。
但是你的mysql程序(這個程序是客戶端,服務器端時mysqld)可以選擇是否使用mysql.sock文件來連接(因為這個方法只適合在Unix主機上面連接本地的mysqld),對於非本地的任何類型的主機。這些在MySQL的手冊(包括晏子翻譯的中文版本,覆蓋3.23/4.0版本)都有說明。只要看看就可以明白。

前面朋友說不能連接,最大可能就是mysqld的這個守護進程沒有啟動。

答案三、

Mysql有兩種連接方式:

(1)TCP/IP (2)socket 對mysql.sock來說,其作用是mysql客戶端程序mysql與mysql服務器端程序mysqlserver處於同一臺機器,發起本地連接時可用
例如你無須定義連接host的具體IP得,只要為空或localhost就可以。 在此種情況下,即使你改變mysql的外部port也是一樣可能正常連接。 因為你在my.ini中或my.cnf中改變端口後,mysql.sock是隨每一次 mysql server啟動生成的。已經根據你在更改完my.cnf後重啟mysql時重新生成了一次,信息已跟著變更。 那麽對於外部連接,必須是要變更port才能連接的。 以上內容來自:http://blog.csdn.net/kerwin612/article/details/8568206 針對以上問題,其實有時等同於   啟動 mysqld 時經過很長時間顯示 Timeout error occurred trying to start MySQL Daemon.
這個錯誤! 參見上一篇博客內容:http://www.cnblogs.com/adair/p/7775155.html

啟動mysql遇到問題Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)