今天解決了一個mysql遠程登錄和本機ip登錄都失敗的問題


前段時間按網上教程在windows系統虛擬機上裝了一個mysql,但是安裝成功后,發現只能在虛擬機上登錄,無法通過遠程登錄。

而且在本機,也只能不指定-h時才可以登錄,如果用mysql -u root -h 127.0.0.1,也會登錄失敗。

報錯信息:ERROR 1130 (HY000): Host '127.0.0.1' is not allowed to connect to this MySQL server

127.0.0.1登錄失敗的原因,我查了一下網上資料,知道可能是由於mysql里面沒有root@127.0.0.1的用戶數據,只有root@localhost的用戶數據,所以登錄失敗。

但即使我給系統加上了root@%的用戶,並且賦了登錄權限,還是登錄不成功。

繼續按網上的資料,確認防火牆也是打開狀態,密碼插件也改回舊版本的mysql_native_password,權限也刷新過,甚至服務也重啟過,但還是不能登錄。

當時查不到原因,只能暫時放棄。

這幾天放假,我突然想到一個問題:我的mysql並不是安裝在默認目錄的,而且配置文件也不是放在mysql的安裝目錄,但我在啟動mysql服務時,只使用了net start mysql,並沒有指定配置文件目錄,那么它是怎么發現我使用哪個配置文件呢?

進去service.msc,檢查了一下mysql服務的詳細信息,發現啟動時確實是沒指定配置文件的。於是猜測會不會是由於安裝的配置文件(我安裝時有指定配置文件)與啟動配置文件不一樣導致數據庫出現異常

嘗試了一下在mysql服務加上啟動參數,指定配置文件后重啟,發現居然可以遠程連接了!

但在服務管理頁面參數配置不是永久的,只要一關閉服務參數就消失。每次都要進services.msc界面啟動服務也是麻煩事,於是在網上找了一下,發現可以使用以下命令指定服務啟動的參數:

sc start mysql --defaults-file=配置文件路徑

不過奇怪的是問題居然無法重現,當我再次停了服務,以netstat start mysql啟動服務時,發現客戶端還是可以遠程連接。

后來嘗試了一下重裝數據庫,也沒法重現之前的問題,不知道怎么回事。不過在重裝過程中,我發現之前安裝時犯了一個錯誤:

安裝mysql服務時,我使用的命令是:

mysqld  -install  mysql

沒有指定 --defaults-file=配置文件路徑(網上的教程都是使用默認配置文件,不需要加上--defaults-file參數)

另外還有一點需要注意,一定要進行mysql安裝目錄下面的bin目錄執行mysqld -install mysql --defaults-file=配置文件路徑

不然生成的mysql服務可執行程序路徑可能是錯誤的,並且這樣做還有一個好處:--defaults-file=配置文件路徑這個命令參數會附加到服務安裝程序路徑,這樣就可以使用net命令管理服務了,不需要使用sc命令管理。

看網上介紹的mysql安裝教程,非常簡單,但我自己實際操作時卻碰上了這個奇葩問題,前后花了幾天時間,才把問題解決。難怪有一句古話說:“紙上得來終覺淺,絕知此事需躬行”


免責聲明!

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



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