通过MySQL客户端和服务器之间的未加密连接,可以访问网络的人可以监视您的所有流量,并检查在客户端和服务器之间发送或接收的数据。
当您必须以安全方式通过网络移动信息时,不加密的连接是不可接受的。要使任何类型的数据都不可读,请使用加密。加密算法必须包含安全性元素,以抵抗多种已知的攻击,例如更改加密消息的顺序或两次重播数据。
MySQL支持使用TLS(传输层安全性)协议在客户端和服务器之间进行加密连接。TLS有时被称为SSL(安全套接字层),但是MySQL实际上并不使用SSL协议进行加密连接,因为它的加密很弱(请参见 第6.3.2节“加密连接TLS协议和密码”)。
TLS使用加密算法来确保可以信任通过公共网络接收的数据。它具有检测数据更改,丢失或重放的机制。TLS还合并了使用X.509标准提供身份验证的算法。
X.509使识别Internet上的某人成为可能。从根本上讲,应该有一个称为“ 证书颁发机构 ”(或CA)的实体,可以将电子证书分配给需要它们的任何人。证书依赖于具有两个加密密钥(公共密钥和秘密密钥)的非对称加密算法。证书所有者可以将证书出示给另一方作为身份证明。证书由其所有者的公钥组成。使用此公共密钥加密的任何数据都只能使用证书所有者拥有的相应密钥来解密。
使用OpenSSL提供对MySQL中加密连接的支持。有关OpenSSL支持的加密协议和密码的信息,请参见 第6.3.2节“加密的连接TLS协议和密码”。
注意
从MySQL 8.0.11到8.0.17,可以使用wolfSSL替代OpenSSL来编译MySQL。从MySQL 8.0.18开始,对wolfSSL的支持被删除,所有MySQL构建都使用OpenSSL。
默认情况下,如果服务器支持加密连接,则MySQL程序会尝试使用加密进行连接,如果无法建立加密连接,则会退回到未加密连接。有关影响使用加密连接的选项的信息,请参见 第6.3.1节“配置MySQL以使用加密连接”和 “加密连接的命令选项”。
MySQL在每个连接的基础上执行加密,并且对给定用户使用加密可以是可选的或强制性的。这使您可以根据各个应用程序的需求选择加密或未加密的连接。有关如何要求用户使用加密连接的信息,请参见第13.7.1.3节“ CREATE USER语句”REQUIRE中对CREATE USER语句 子句 的讨论。另请参见第5.1.8节“服务器系统变量”中对系统变量的描述。 require_secure_transport
主复制服务器和从复制服务器之间可以使用加密的连接。请参见 第17.3.1节“设置复制以使用加密的连接”。
有关使用来自MySQL C API的加密连接的信息,请参见第28.6.21节“ C API加密连接支持”。
也可以使用加密从SSH连接内连接到MySQL服务器主机。有关示例,请参见 第6.3.4节“使用SSH从Windows远程连接到MySQL”。