问询:MySQL客户端是否支持无需提供凭据即可验证--ssl-mode=REQUIRED与指定主机的SSL连接
首先直接给你结论:目前MySQL官方客户端并没有内置的、完全无需提供任何凭据就能验证SSL连接的专用模式,你的研究结论是对的。
先说说现有--ssl-mode=REQUIRED的实际工作逻辑
按照官方文档的描述,REQUIRED模式确实是优先尝试建立加密连接:
REQUIRED: Establish an encrypted connection if the server supports encrypted connections. The connection attempt fails if an encrypted connection cannot be established.
从设计逻辑上讲,客户端会先完成SSL/TLS握手,确认加密通道建立成功后,才会发送用户名、密码等敏感信息。但问题在于,你没办法直观地验证这个顺序——毕竟要触发这个流程,你至少得提供一个用户名(哪怕是随便填的),而且你没法百分百排除客户端出现bug导致先发送凭据再握手的可能性,这也是你觉得这个方式不够“无风险”的核心原因。
给你一个替代的无风险验证方案
如果你想完全避开提交任何MySQL凭据来测试服务器的SSL支持,可以用openssl工具直接测试MySQL端口的SSL握手能力,命令如下:
openssl s_client -connect your-mysql-host:3306 -starttls mysql
这个命令会直接尝试和目标主机的3306端口建立SSL连接,全程不需要任何MySQL相关的用户名、密码或数据库信息。如果连接成功,你会看到SSL证书相关的输出;如果服务器不支持SSL,命令会直接报错。通过这个方法,你可以间接确认--ssl-mode=REQUIRED在该主机上是否能正常工作。
关于提交功能请求
如果你确实需要MySQL客户端原生支持这种“仅握手验证、不发送凭据”的模式,那么去官方平台提交功能请求是完全合理的——毕竟这种需求对于新手或者需要严格验证安全性的场景来说,确实能带来更强的安全感。
备注:内容来源于stack exchange,提问作者porg

