解决mysql.sock连接不上问题:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
-
知其所以然
??????這是個本人之前遇到過多次的問題,今天在實驗室做數據庫測驗,沒帶充電器只好用實驗室的舊主機通過遠程連接云服務器上linux下安裝的數據庫,再次遇到。而本人有時會突然有強迫癥,花了大量時間來解決這個問題,但是測驗只能延期完成了。
??????該錯誤提示的意思:無法通過socket /tmp/MySQL.sock連接到本地MySQL服務器
??????該錯誤會導致的問題:無法通過socket連接數據庫,有些同學例如我之前使用軟連接link的方式暫時解決了問題,但是沒有從根源的配置文件my.cnf上去修改,導致了數據庫重啟時軟連接失效,而重復多次出現該問題。 -
如果你只是想暫時登錄,用下面的方法即可
暫時登錄
1.使用TCP/IP登錄
??????使用TCP/IP登錄暫時登錄到數據庫,但是如果設置了外部地址登錄用戶權限,可能會被限制權限。
2.如果你知道服務器啟動時創建sock的路徑,一般為/var/lib/mysql/mysql.sock(安裝目錄)與/tmp/mysql.sock,使用指定sock路徑登錄
mysql -u -root(用戶名) -p -s sock路徑3.設置軟連接,主要的思路是設置/var/lib/mysql/mysql.sock(安裝目錄)與/tmp/mysql.sock的軟連接。
??????因為在數據庫重啟即失效,不推薦,還不如用第二個方法。
修改my.cnf配置文件,解決根源問題
?????? 首先,mysql8.0.17版本默認登錄時連接的mysql.sock文件路徑:
????????????/tmp/mysql.sock
??????(如果你不了解mysql的連接方式,文章后面有詳細解釋)
??????這時我們需要用vim命令將my.cnf配置中,mysqld服務器啟動時創建的mysql.sock修改成與連接路徑匹配。
???????或者將mysql默認登錄時連接的sock文件改為/var/lib/mysql/mysql.sock(安裝目錄),在my.cnf里面寫上[client]的相關配置,并將socket路徑寫在[client]下方的配置里,否則登陸時,mysql只會去默認的/tmp下尋找mysql.sock
mysql的連接方式有什么?
1. Socket(本地連接)
登錄本地數據庫默認方式是使用socket連接,即當server和client在同一臺服務器上的時候,我們可以直接用mysql命令登陸。連接的代碼:
2. TCP/IP(協議連接)
通過協議連接mysql,mysql登陸的時候,指定參數-h,會使用tcp/ip的方式連接,如果沒有指定端口的話,默認是使用3306端口。代碼為:
我們平時使用的數據庫管理工具如navicat,workbench等可以使用TCP/IP連接,這樣可以實現遠程連接,當然在本機上也可以使用TCP/IP協議并將主機地址改為localhost連接本地數據庫,但是我認為在使用本機端口還多使用了TCP/IP端口,這樣效率自然不如socket高。
總結
以上是生活随笔為你收集整理的解决mysql.sock连接不上问题:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下数学公式的编辑器,如何利用开
- 下一篇: OSChina 周二乱弹 ——普通高等男