首頁  >  文章  >  資料庫  >  解決mysql資料庫無法被其他ip存取的情況

解決mysql資料庫無法被其他ip存取的情況

巴扎黑
巴扎黑原創
2017-09-04 15:54:071474瀏覽

這篇文章主要為大家介紹了關於mysql資料庫無法被其他ip存取的解決方法,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

還是之前說的項目,環境目前已經準備好了,項目準備驗證階段發現了一個問題,從上層應用輸入鑑權存取應用,一直在等待狀態,輸入了正確的使用者名稱及密碼,卻無法存取。看起來像是沒辦法存取資料庫連線的意思。

mysql部署後的端口一般都是3306,嘗試去ping和telnet 3306端口,發現ip可以ping通,但是3306端口無法被telnet,並且給出了一個這樣的報錯:


ERROR 1130: Host *.*.*.* is not allowed to connect to MySQL

看到這個錯誤後,上網一查,基本上有挺多解決方案,但是為什麼還要專門寫一下呢?

答案是:網路上很多都是mysql 5.6的解決方法,在5.7裡,這個錯誤解決方法如下:

1.在第一次登陸mysql後,需要及時修改root的密碼,這裡5.6和5.7有一個差異,那就是5.6的密碼字段為:password,但是在5.7版本裡,這個字段被取消了,取而代之的是:authentication_string字段。

正確的修改方法為:


update user set authentication_string=password("xxxx") where user = "root";
flush privileges;

2.修改好了之後,我們用use mysql指令切換到mysql函式庫裡,注意,這個mysql函式庫在mysql裡是真是存在的,就存放一些db相關資訊的函式庫。

指令:use mysql;

3.找到users表,執行下列指令:


# #

grant all privileges on *.* to 'root'@'%' identified by 'JLwg!2017' with grant option;

網路上關於這塊的修改方法很多,應該一共有4種,我用的是其中一種。

這個指令的意思是,修改root用戶的存取權限,讓所有ip都可以存取這個用戶,這樣一來的話,我們的應用程式就可以從外部ip存取這個mysql了,不然只有localhost可以訪問,很不方便。

4.最後執行

flush privileges;指令,重啟Mysql服務,應用順利登陸成功

以上是解決mysql資料庫無法被其他ip存取的情況的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn