1、錯誤提示:
今天要用到數據庫的時候突然數據庫就報錯了:
Can’t connect to local MySQL server through socket '/Data/mydata/mysql.sock’
2、分析錯誤原因:
在網上找了很久都沒有找到是什麼原因。對着前人的錯誤解決辦法也沒有成功。但是貌似知道是什麼原因錯誤的。首先來說一下我的觀點吧:
我出現的問題是:找不到mysql.sock,如果你可以運行。首先我們需要找到這個文件是在哪裏。
find / -name mysql.sock
哈哈哈,我試着去找這個文件但是沒有找到。很好!如果是這樣的就對了。因爲mysql在沒有啓動的時候是不會有這個文件的,這其實是一個套接字,在啓動mysql的時候其實是利用這樣的一個套接字來連接數據庫的
如果你因爲丟失套接字文件而不能連接,你可以簡單地通過重啓服務器重新創建得到它。因爲服務器在啓動時重新創建它。
如果和我一樣,重啓服務器還是沒有任何變化,你可以先執行下面的語句:
mysql -uroot -h 127.0.0.1 -p
用這種連接方式相信大家都是可以連接成功的,這種方式就避免了使用套接字連接。
如果套接字文件被一個cron任務刪除,問題將重複出現,除非你修改cron任務或使用一個或使用一個不同的套接字文件,我的解決辦法是重新指定一個不同的套接字,或者說,我現在沒有mysql.sock文件,所以我要想辦法生成一個。
好的!現在我們找到了錯誤的原因了…
3、解決辦法:
先把需要修改的文件放在前面。
我們一共需要修改這四個文件:
修改的目的在於保證他們產生的套接字目錄完全一樣。
1、/etc目錄下面的 my.cnf
2、 /etc/mysql/mysql.conf.d 目錄下面的 mysqld.cnf
3、/etc/mysql/conf.d 目錄下面的mysql.cnf
4、/etc/mysql 目錄下面的 debian.cnf
首先我們看一下各個文件socket文件的目錄在哪裏:
其中第一張圖片有一個被註釋掉的socket文件的目錄,後面的是我修改的。只要保證這四個文件的socket目錄是一樣的就好了。