這篇文章主要為大家介紹了關於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中文網其他相關文章!