mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


錯誤原因:/var/lib/mysql目錄中socket文件不存在。
連接mysql服務器有兩種方式:tcp連接,通過socket文件連接。通過socket文件,啟動mysql服務,mysql服務會自動生成一個sock文件,生成的sock文件默認放在 --datadir=/var/lib/mysql,mysql默認從/var/lib/mysql目錄讀取sock文件。

解決辦法:
1、看看/var/lib/mysql/mysql 有沒有mysql.sock文件
2、沒有mysql.sock,重啟mysql服務,看看有沒有。
3、沒有的話,ps aux|grep mysql|grep -v 'grep' 查看mysql服務生成的sock在哪個目錄,看看這個目錄有沒有。
4、如果mysql服務生成在其他目錄,解決辦法有:
方法一、修改mysql服務生成的目錄,在my.cnf 中[mysqld] socket
方法二、mysql從/var/lib/mysql/讀取sock文件,建立一個軟連接,或者copy過來
方法三、修改mysql讀取的目錄,在my.cnf 中[mysql] socket
方法四、啟動指定socket,mysql -uroot -p123456 --socket='/var/lib/mysql/mysql.sock'

注意:
1、通過socket,只能在本地機器上連接。
2、使用-hlocalhost就是經過socket,不經過網絡,通過netstat 看不到tcp連接,可以認為mysql與mysql.sock文件交互,向里面寫數據,從里面讀取數據。
3、使用-h127.0.0.1就是經過tcp,通過netstat 可以看到連接。


免責聲明!

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



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