ERROR 2002 (HY000): Can't connect to local MySQL server through socket /tmp/mysql.sock
是因爲不能通過socket文件連接mysql服務器,先說解決方案,有兩種:
1、執行 sudo ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
2、將連接mysql的語句改成 mysql -h 127.0.0.1 -u root -p
再來分析爲什麼出現這種錯誤以及這麼解決的原因:
mysql使用unix socket或者tcp來連接數據庫進行通訊,默認不加 -h選項時使用的就是localhost即unixsocket,此時會通過/tmp/mysql.sock來通訊,但是在配置文件中默認生成的socket文件是在/var/lib/mysql/mysql.sock(不同安裝可能不同,建議查看/etc/my.cnf確認),所以要想mysql使用這個文件通訊,最簡單的方法就是建立軟鏈接,一勞永逸,此爲方法一
方法二就是強制mysql使用tcp通訊,因爲127.0.0.1對於mysql來說走的是tcp協議而非unixsocket,這種方法的弊端就是每次都要指明本地地址127.0.0.1