Mysql

遍歷 MySQL 中的所有使用者並添加 REQUIRE SSL 標誌

  • August 6, 2014

如何遍歷 MySQL 數據庫中的所有使用者(我們有 > 3000),並將REQUIRE SSL標誌添加到每個帳戶?我不想修改現有使用者權限、主機或密碼,只需添加REQUIRE SSL

您可以GRANT為每個現有使用者授予特殊的無特權USAGE特權,這不會更改他們現有的特權,但可以用於REQUIRE SSL現有使用者。

USAGE可以指定創建一個沒有權限的使用者,或者為一個帳戶指定REQUIREor子句而不更改其現有權限。WITH

http://dev.mysql.com/doc/refman/5.6/en/grant.html

mysql> SHOW GRANTS;
+---------------------------------------------------------------------------------------------+
| Grants for sqlbot@%                                                                         |
+---------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'sqlbot'@'%' IDENTIFIED BY PASSWORD '*XXX' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> GRANT USAGE ON *.* TO 'sqlbot'@'%' REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS;
+---------------------------------------------------------------------------------------------------------+
| Grants for sqlbot@%                                                                                     |
+---------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'sqlbot'@'%' IDENTIFIED BY PASSWORD '*XXX' REQUIRE SSL WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

上述方法添加了 SSL 限制,而不會更改我的權限。

或者,您應該能夠操縱mysql. user表直接與查詢。SUPER這裡唯一需要注意的是:在您知道 SSL 正常工作之前,不要將其添加到您自己的帳戶中,並記住FLUSH PRIVILEGES;在手動修改授權表之後。如果沒有最後一步,伺服器將不會注意到更改,直到下一次重新啟動,因為授權表被記憶體並且只有更改由伺服器進行GRANT或被REVOKE伺服器注意到。

此查詢應強制所有使用者使用 SSL。您可能希望根據user表中正確配置的使用者的外觀對其進行修改以滿足您的要求,或者僅對一個使用者而不是整個使用者群進行嘗試,以確認您獲得的行為是您的行為預計。

mysql> UPDATE mysql.user SET ssl_type = 'any' WHERE ssl_type = '';
mysql> FLUSH PRIVILEGES;

我沒有理由認為這應該是有問題的,但請在生產中謹慎使用此建議。

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