如何检查MySQL用户是否需SSL?AWS RDS 5.7.22遇SHOW GRANTS无显示问题
检查MySQL用户是否需要SSL连接的方法
我明白你的困惑——你明明执行了GRANT USAGE ON *.* TO 'root'@'%' REQUIRE SSL;来强制root@%用户使用SSL,但SHOW GRANTS的输出里完全没提到SSL要求,这确实有点反直觉。
问题出在:REQUIRE SSL是用户的连接属性,不是权限本身,而SHOW GRANTS主要展示的是用户的权限集合,不会包含这类连接限制规则。不过你可以通过以下两种方法来确认用户的SSL要求:
方法1:使用SHOW CREATE USER命令
这个命令会输出用户的完整创建/配置语句,包括所有连接限制(比如SSL要求)。执行:
SHOW CREATE USER 'root'@'%';
如果之前的REQUIRE SSL设置生效,输出结果里会明确包含REQUIRE SSL的部分,类似这样:
CREATE USER 'root'@'%' IDENTIFIED BY PASSWORD '...' REQUIRE SSL WITH GRANT OPTION;
方法2:查询mysql.user系统表
用户的SSL属性存储在mysql.user表的ssl_type字段中,执行以下查询:
SELECT user, host, ssl_type FROM mysql.user WHERE user = 'root' AND host = '%';
在MySQL 5.7版本中:
- 如果
ssl_type的值为'SSL',说明该用户必须使用SSL连接 - 如果值为空,则没有强制SSL要求
另外补充一点:在AWS RDS环境中,你也可以通过RDS控制台查看实例的全局SSL设置,但那是实例层面的配置,而你设置的是用户级别的强制SSL,所以上面的两种方法更直接针对特定用户的规则。
内容的提问来源于stack exchange,提问作者committedandroider
相关产品推荐
相关产品推荐

