Mysql

MySQL GRANT PROXY - 這是什麼意思?

  • January 13, 2022

我跑:

show grants for root@localhost;

我看到了

GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

來自 mysql 文件:

https://dev.mysql.com/doc/refman/5.5/en/proxy-users.html

這使得外部使用者可以成為第二個使用者的代理;即擁有第二個使用者的權限。換句話說,外部使用者是“代理使用者”(可以冒充或成為另一個使用者的使用者),而第二個使用者是“代理使用者”(其身份可以被代理使用者獲取的使用者) .

但我不明白他們的意思。我從另一位離職的工人那裡得到了這個系統,他想確保一切是否安全,甚至不知道是否需要這筆補助金。但如果它沒有造成任何安全問題,我可以離開它。

有人可以用更簡單的方式解釋嗎?

更新:

如何以其他使用者身份連接?我正在嘗試使用者名密碼的各種組合,但我無法連接。

例如,我使用了 root 使用者,但使用了另一個使用者的密碼,這不起作用。嘗試了另一個使用者和root密碼,也沒有用。

更新:

或者這可能意味著 root 使用者可以以其他使用者身份連接?如果是這樣,至少如何做到這一點?

MySQL 使用者身份驗證是一個相當冗長的解釋過程。我向您推薦我 3.5 年前對MySQL 錯誤的回答:使用者 ‘a’@’localhost’ 的訪問被拒絕(使用密碼:YES),這樣您就可以看到使用者進行身份驗證所採取的步驟。

PROXY 授權的作用是允許一個使用者偽裝成另一個使用者並繞過 MySQL 正常但冗長的使用者身份驗證協議

如果知道這一點並開始利用它,這種代理授權可能是一個安全漏洞。停用它的最快方法是執行

TRUNCATE TABLE mysql.proxies_priv;
FLUSH PRIVILEGES;

這將清除目前的代理權限。

之後,如果要限制代理權限,請轉到作業系統並執行以下操作:

cd /var/lib/mysql/mysql
chmod -w proxies_priv.*

這將阻止創建新的代理權限。

試一試 !!!

作為補充答案(解釋為什麼代理使用者有用),您可以將代理使用者視為“角色”,將代理使用者視為“您賦予角色的使用者”。

例如,如果您知道您的實習生應該只從數據庫中讀取(而不是寫入),您可以創建一個名為internwith的代理使用者GRANT SELECT,然後,為您的每個實習生創建一個代理使用者GRANT PROXY ON 'intern@localhost' TO 'name_of_the_intern@localhost'

MySQL 文件給出了一個很好的例子:

通過代理獲得的一項管理好處是 DBA

$$ DataBase Admin $$可以設置具有一組權限的單個帳戶,然後允許多個代理使用者擁有這些權限,而無需將權限單獨分配給每個使用者。作為代理使用者的替代方案,DBA 可能會發現角色提供了一種將使用者映射到特定命名權限集的合適方法。每個使用者都可以被授予給定的單個角色,實際​​上,被授予適當的權限集。

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