用同一个账号分别走本地socket和真实的TCP连接,对比Ssl_cipher的真实状态,看加密到底是不是配置出来的。
代码-- 默认连接(本机会自动走本地Unix socket) mysql -u root -e "SELECT VARIABLE_VALUE FROM performance_schema.session_status WHERE VARIABLE_NAME='Ssl_cipher';" -- 显式走TCP,不加任何--ssl参数 mysql -u root -h 127.0.0.1 -P 3306 --protocol=TCP -e "..."
Ssl_cipher: (空) Ssl_version: (空)
本地socket连接真实是同一台机器上的进程间通信,数据完全不经过真实的网络协议栈,MySQL真实不会(也没必要)为它协商TLS——这不是配置缺失,是这类连接方式本身真实不涉及网络层,加密没有对象可保护。
Ssl_cipher: TLS_AES_128_GCM_SHA256 Ssl_version: TLSv1.3
每一步都是本文上面用真实的performance_schema查询跑出来的原始结果。
performance_schema.session_status