mysql 可以從 TCP 連接但是不能從 socket 鏈接
問題描述
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ’/var/run/mysqld/mysqld.sock’ (2)
服務(wù)器上的 mysql 原本是正常的,突然本地?zé)o法從 socket 進(jìn)行連接,也沒有 mysqld.sock 文件。本地和遠(yuǎn)程通過 tcp 都是可以鏈接的。
我現(xiàn)在修復(fù)了,但是不確定是不按照如下方式修復(fù)的(可能是湊巧了),大家可以試試。
刪除/var/lib/mysql 下的文件,然后重啟服務(wù)。sudo find / -type s 就可以找到 mysql.sock了,根據(jù)其位置重新設(shè)置一下ini 文件中的路徑但是這樣會(huì)導(dǎo)致 innodb損毀出現(xiàn)表找不到。所以要先備份。
問題解答
回答1:mysql> show variables like '%sock%';
看一下mysql啟動(dòng)的時(shí)候sock文件放到哪里了,本地使用mysql客戶端連接的時(shí)候 -S /tmp/mysql.sock指定。如果這個(gè)文件不存在要么被誤刪、要么沒權(quán)限寫,看一下mysql日志。
輕易就把/var/lib/mysql數(shù)據(jù)文件目錄給刪了,服了
回答2:表述有問題吧,socket不是對(duì)tcp/ip的一層封裝么?
回答3:看看文件還在不在,有沒有權(quán)限,是不是和MySQL的設(shè)置一致。如果以前是好的,那么不排除被誤刪除或更改了權(quán)限的可能。
相關(guān)文章:
1. phpadmin的數(shù)據(jù)庫(kù),可以設(shè)置自動(dòng)變化時(shí)間的變量嗎?就是不需要接收時(shí)間數(shù)據(jù),自動(dòng)變化2. html5和Flash對(duì)抗是什么情況?3. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過段時(shí)間會(huì)消失是什么情況?4. html - 爬蟲時(shí)出現(xiàn)“DNS lookup failed”,打開網(wǎng)頁卻沒問題,這是什么情況?5. javascript - vue項(xiàng)目里的package.json6. ios - 為什么用WKWebView加載相同的html文本,有時(shí)展示的內(nèi)容卻不一樣。7. angular.js - vue中類似于angular的ng-change的指令是?8. javascript - Ubuntu修改port后無法登陸9. boot2docker無法啟動(dòng)10. mac里的docker如何命令行開啟呢?
