Mysql

從 2 台不同的機器連接到 mySQL

  • June 30, 2017

全部,

是否可以修改 MySQL DB 的權限,或者我需要撤銷它並再次授予它?

我的問題如下:

我在 Gentoo Linux 上執行 MySQL 伺服器,我正在嘗試從 2 台不同的 Windows 機器遠端連接(所有電腦都在我家的同一個網路上)。

當我無法連接時,我在 Gentoo 論壇上問了一個問題,並得到了一個執行建議:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION ;

我的猜測是我使用了其中一台機器的靜態 IP 地址,因為我可以從一台 Windows 機器連接,但不能從另一台機器連接。

所以現在,我的問題是 - 是否可以發出類似的問題:

ALTER PRIVILEGES ON.....;

或者也許我可以做一些查詢來解決這個問題?

謝謝你。

順便說一句,有點離題:我找不到“遠端訪問”的標籤。有人可以創建它嗎?或者它不存在是有原因的?


編輯:

我實際上希望權限是這樣的:

GRANT ALL ON foo.* TO bar@'192.168.1.x' IDENTIFIED BY 'PASSWORD';

這樣我只能從 192.168.1.1 - 192.168.1.254 連接。我不需要這個伺服器是公開可用的。


編輯2:

GRANT USAGE ON *.* TO 'root'@'192.168.1.4' IDENTIFIED BY PASSWORD '*DC365D603F605E79DE2F2B8DA969DBB8497BEC89'
GRANT ALL PRIVILEGES ON `draft`.* TO 'root'@'192.168.1.4' WITH GRANT OPTION

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*DC365D603F605E79DE2F2B8DA969DBB8497BEC89' WITH GRANT OPTION
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

編輯3:

我只是嘗試執行以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@192.168.1.% IDENTIFIED BY '<my_password>' WITH GRANT OPTION;

我得到以下回复:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '% IDENTIFIED BY '<my_password>'' at line 1 0.00041 sec

所以你可以做什麼:

  1. 如果要將 IP 從 192.168.1.4 更改為 192.168.1.3,則可以更新 mysql.user 表

更新 mysql.user set host =’ 192.168.1.3 where host=‘192.168.1.3’ ;

刷新權限:

您不能在創建使用者的單個查詢中定義主機名範圍。您需要為不同的 IP 創建相同的使用者,或者您可以將 % 作為主機名,但我不建議這樣做

  1. 如果您想要不同的使用者,請創建具有所需 IP 的相同使用者。

讓我知道是否需要更清楚

編輯

您不能在 mysql.user 表中定義主機名範圍。為此,您可以創建具有相同角色但在不同 IP 上的相同使用者。您必須為每個 IP 單獨執行此操作。

更新

請嘗試創建使用者:

將選擇授予 db 上的 ‘root’@‘192.168.1.%’。* 由 ‘pass’ 標識;

更新 2

這是因為 IP 應該作為字元串放在 ’’ 之間。

所以你去:

將 db_name.table_name 上的所有權限授予 ‘root’@‘192.168.1.%’ IDENTIFIED BY ’’ WITH GRANT OPTION;

引用自:https://dba.stackexchange.com/questions/177500