mysql 允許遠程IP訪問配置

 

 

MySQL遠程訪問,也就是通過ip訪問MySQL服務,MySQL對於安全的要求是非常嚴格的,需要授權。 

 

 

grant語法

grant 權限名(所有的權限用all) on 庫名(*全部).表名(*全部) to ‘要授權的用戶名’@’%’(%表示所有的IP,可以只些一個IP) identified by “密碼”;

身份檢查使用user表(Host, User和Password)3個範圍列執行。服務器只有在user表記錄的Host和User列匹配客戶端主機名和用戶名並且提供了正確的密碼時才接受連接。

在user表Host值的指定方法:

* Host值可以是主機名或IP號,或’localhost’指出本地主機。

* 你可以在Host列值使用通配符字符“%”和“_”。

* Host值’%’匹配任何主機名,空Host值等價於’%’。它們的含義與LIKE操作符的模式匹配操作相同。例如,’%’的Host值與所有主機名匹配,而’%.mysql.com’匹配mysql.com域的所有主機。

 

 

1.本地訪問 

Sql代碼  收藏代碼
  1. GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'admin' WITH GRANT OPTION;   
  2. FLUSH PRIVILEGES;  



上述命令的意思是爲admin用戶授權,以localhost方式訪問數據庫,密碼爲admin,這是我們推薦的訪問方式,不直接暴露IP,提高數據庫服務器的安全性。 

2.遠程訪問 
如果數據庫服務器與應用服務器物理層面分割,也就是不在同一臺服務器的時候,我們需要通過ip方式訪問,這個ip就是數據庫服務器主機IP。 

Sql代碼  收藏代碼
  1. GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY 'admin' WITH GRANT OPTION;   
  2. FLUSH PRIVILEGES;  



當然,這裏授予admin用戶WITH GRANT OPTION權限,欠穩妥!如果一個用戶從遠程登錄修改了數據庫表結構等等,是非常有風險的! 

通常不建議授予授予其他用戶權限權力,即: 

Sql代碼  收藏代碼
  1. GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY 'admin';   
  2. FLUSH PRIVILEGES;  



3.任意訪問 
如果不限制ip訪問,授權某個用戶可以以任意ip訪問該服務,可以這樣寫: 

Sql代碼  收藏代碼
  1. GRANT ALL PRIVILEGES ON *.* TO admin@'%' IDENTIFIED BY 'admin';   
  2. FLUSH PRIVILEGES;  



注意單引號! 

3.取消授權 
當然,有授權,就一定有取消授權: 

Sql代碼  收藏代碼
  1. REVOKE ALL ON *.* FROM [email protected];   
  2. FLUSH PRIVILEGES;  

 

 




OK,現在我們可以開始部署我們的應用了! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章