遍历 MySQL 中的所有用户并添加 REQUIRE SSL 标志

Jus*_*tin 6 mysql permissions ssl

如何遍历 MySQL 数据库中的所有用户(我们有 > 3000 个),并将REQUIRE SSL标志添加到每个帐户?我不想修改现有用户的权限、主机或密码,只需添加REQUIRE SSL

Mic*_*bot 7

您可以为GRANT每个现有用户提供特殊的无特权USAGE特权,这不会改变他们现有的特权,但可用于REQUIRE SSL现有用户。

USAGE可以指定创建一个没有权限的用户,或者在不更改其现有权限的情况下为帐户指定REQUIREorWITH子句。

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)
Run Code Online (Sandbox Code Playgroud)

上述方法添加了 SSL 限制,而不会以其他方式更改我的权限。

或者,您应该能够操作mysql. user表直接与查询。这里唯一的警告:在SUPER您知道 SSL 正常工作之前不要将其添加到您自己的帐户中,并记住FLUSH PRIVILEGES;在手动修改授权表后。如果没有最后一步,服务器将不会注意到更改,直到下一次重新启动,因为授权表被缓存,否则只有服务器所做的更改GRANTREVOKE由服务器注意到。

此查询应强制所有用户使用 SSL。您可能希望根据正确配置的用户在您的user表中的样子对其进行修改以满足您的要求,或者仅对一个用户而不是整个用户群进行尝试,以确认您获得的行为是您的行为预计。

mysql> UPDATE mysql.user SET ssl_type = 'any' WHERE ssl_type = '';
mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

我没有理由认为这应该是有问题的,但请在生产中谨慎使用此建议。