啟動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) 


請問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
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM