Mysql
遍歷 MySQL 中的所有使用者並添加 REQUIRE SSL 標誌
如何遍歷 MySQL 數據庫中的所有使用者(我們有 > 3000),並將
REQUIRE SSL
標誌添加到每個帳戶?我不想修改現有使用者權限、主機或密碼,只需添加REQUIRE SSL
您可以
GRANT
為每個現有使用者授予特殊的無特權USAGE
特權,這不會更改他們現有的特權,但可以用於REQUIRE SSL
現有使用者。
USAGE
可以指定創建一個沒有權限的使用者,或者為一個帳戶指定REQUIRE
or子句而不更改其現有權限。WITH
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;
我沒有理由認為這應該是有問題的,但請在生產中謹慎使用此建議。