如何在Mysql中检查用户是否需要SSL?

plupiseo  于 2023-02-07  发布在  Mysql
关注(0)|答案(3)|浏览(337)

我正在用Mysql版本5.7.22测试AWS RDS Mysql示例。
在要求特定用户的SSL后,“root”(. 上的授权用法TO“root '@”%“要求SSL;“),这是根的显示赠款的结果;

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD,
  PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, 
 CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, 
 REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, 
ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' 
 WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

是否有任何方法可以检查用户是否需要ssl?Show赠款输出没有提到ssl。我认为Show grants是正确的命令,因为ssl最初是通过GRANT USAGE在用户上要求的。

tag5nh1u

tag5nh1u1#

在这里你可以看到所有使用REQUIRE SSL的用户(适用于MySQL 5.7和其他):

SELECT *
FROM mysql.user
WHERE ssl_type <> '';
cxfofazt

cxfofazt2#

我发现的一件事是,从客户端,你可以运行status来确定当前的连接是否使用ssl,但不确定是否有一种方法可以为特定的用户做到这一点。

编辑

ChrisWhite的解决方案(MySQL: REQUIRE SSL not shown in grants)适用于特定用户

tag5nh1u

tag5nh1u3#

使用DDL(更容易)

您可以按照documentation中的说明获取用户的DDL:
SHOW CREATE USER 'user'@'localhost';
然后检查是否在显示的创建用户请求中找到REQUIRE SSL

使用status命令

正如@committedandroider所述,您可以使用status命令查看当前用户是否使用SSL登录,如果它被写成SSL: Not in use,则表示当前没有使用它。
要强制不使用SSL的连接,您可以使用--skip-ssl或在新的mysql版本上使用--ssl-mode=DISABLED选项:mysql -u username -p --ssl-mode=DISABLED。如果访问被拒绝,可能是因为需要ssl(但也可能是其他原因导致的,所以我更愿意使用DDL选项)。

相关问题