如何解決mysql.sock直接找不到了的問題
阿新 • • 發佈:2018-12-23
今天為了修改一個在Linux伺服器上的專案,就把之前的專案直接刪除了,然後又把新的專案上傳了上去,通過tomcat釋出後,發現通過外網不能訪問,而且也沒有找到tomcat的程序,於是就看了一下日誌,發現是連線mysql的時候出現了問題。於是測試了一下mysql發現沒法登入,出現了Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock的問題。
先說一下mysql.sock的作用吧。
首先mysql的連線方式有兩種:
1、通過TCP/IP的連線
2、通過本地socket的連線,對mysql.sock來說,其作用是程式與mysqlserver處於同一臺機器,發起本地連線時可用。在連線時你無須定義連線host的具體IP,只要為空或localhost就可以。
之後就google了一下,網上的方法都是通過檢視/etc/my.cnf檔案,檢視mysql.sock的位置,然後建立軟連線,將找到的mysql.sock的位置與配置檔案中所說的位置連線起來。但是我遇到的問題是直接找不到了!!!!!通過find的命令全盤搜尋也找不到。
於是又找到了一篇文章,http://www.weiruoyu.cn/?p=673 ,不過文章提到的是沒有切換使用者,這一點無所謂,我一直用的是root使用者,然後,按照上面說的:
$/usr/bin/mysql_install_db //重建授權表
$/usr/bin/mysqld_safe &
$/usr/local/bin/mysql //測試
mysq>bye;
重新建立了新的授權表,重新生成新的 /var/lib/mysql/mysql.sock 和 hostname.pid,然後直接通過mysql命令登入,修改密碼:
mysql> use mysql;
mysql> update user set password=password("你的新密碼") where user="root";
mysql> flush privileges;
mysql> quit
重新啟動一下服務,就可以了!!!!!