前段時間按網上教程在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里面沒有[email protected]的用戶資料,只有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安裝教程,非常簡單,但我自己實際操作時卻碰上了這個奇葩問題,前后花了幾天時間,才把問題解決,難怪有一句古話說:“紙上得來終覺淺,絕知此事需躬行”
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/149389.html
標籤:MySQL
上一篇:爬蟲實戰 -- QQ空間自動點贊
下一篇:來Blink第一天~多多指教
