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. python round 四舍五入?2. sql語句 - 如何在mysql中批量添加用戶?3. javascript - 按鈕鏈接到另一個(gè)網(wǎng)址 怎么通過百度統(tǒng)計(jì)計(jì)算按鈕的點(diǎn)擊數(shù)量4. 事務(wù) - mysql共享鎖lock in share mode的實(shí)際使用場(chǎng)景5. mysql - PHP定時(shí)通知、按時(shí)發(fā)布怎么做?6. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 1107. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。8. node.js - mysql如何通過knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)9. mysql - JAVA怎么實(shí)現(xiàn)一個(gè)DAO同時(shí)實(shí)現(xiàn)查詢兩個(gè)實(shí)體類的結(jié)果集10. python - 請(qǐng)問這兩個(gè)地方是為什么呢?
