主機無法連接虛擬機上的mysql


昨天在虛擬機上搭建web項目環境時,想在主機上使用navicat訪問虛擬機上的mysql數據庫,報錯大概是“hostxxx is not allowed to this mysql server”

於是就檢查防火牆,是關閉的,檢查網絡模式,是橋接模式,虛擬機也能和主機ping通。。。emmm那怎么辦呢

參看之前項目的安裝文檔,發現自己遺漏了這么兩句配置:

cmd進入mysql,輸入:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

(這表示賦予任何主機訪問數據的權限,其中*.*表示可以訪問mysql server上的任意數據庫(全局權限),如果替換成a.*,即表示可以訪問mysql server上的a數據庫啦(表權限);

其中%可以替換為具體的ip地址,如192.168.12.80,表示賦予該主機訪問虛擬機mysql server的權限)

再輸入:

FLUSH   PRIVILEGES;

(這表示刷新MySQL的系統權限相關表,如果授權之后不加這條命令,上面的授權就無法立即生效,除非重啟mysql server

 


 

這里還有一些補充問題,例如:flush privileges這條命令什么情況下需要執行;賦予權限之后如何撤回權限;

在博客園發現了一位大佬總結的相關解釋:https://www.cnblogs.com/gaosf/p/11189090.html

實踐發現:

1、賦予全局權限后,命令是立即生效的,接下來創建的連接都可以使用新的權限,因此不需要再執行FLUSH   PRIVILEGES;

2、取消權限:revoke all privileges on *.* from 'username'@'%';

     1)如果是新建的連接,可以看到因權限不足產生的臨時庫

    2)如果是已存在的連接,取消授權后,訪問數據庫中的表,會報錯:

 

 


 

2019/10/8

防火牆未關閉的報錯

 

暫時的解決辦法:

service iptables stop  關閉防火牆,設置后即時生效,重啟后會復原

查看防火牆狀態 service iptables status

永久的解決方法:

chkconfig iptables off 關閉防火牆,設置后重啟生效,重啟后不復原

 


免責聲明!

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



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