## 6.3 使用加密连接

[6.3.1 配置 MySQL 以使用加密连接](using-encrypted-connections.html)
[6.3.2 加密连接 TLS 协议和密码](encrypted-connection-protocols-ciphers.html)
[6.3.3 创建 SSL 和 RSA 证书和密钥](creating-ssl-rsa-files.html)
[6.3.4 使用 SSH 从 Windows 远程连接到 MySQL](windows-and-ssh.html)

[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)

通过 MySQL 客户端和服务器之间的未加密连接，可以访问网络的人可以监视您的所有流量并检查客户端和服务器之间发送或接收的数据。

[](<>)

当您必须以安全的方式在网络上移动信息时，未加密的连接是不可接受的。要使任何类型的数据不可读，请使用加密。加密算法必须包含安全元素，以抵抗多种已知攻击，例如更改加密消息的顺序或重复数据两次。

MySQL 使用 TLS（传输层安全）协议支持客户端和服务器之间的加密连接。TLS 有时被称为 SSL（安全套接字层），但 MySQL 实际上并不使用 SSL 协议进行加密连接，因为它的加密很弱（参见[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html)）。

TLS 使用加密算法来确保通过公共网络接收的数据是可信的。它具有检测数据更改、丢失或重放的机制。TLS 还包含使用 X.509 标准提供身份验证的算法。

[](<>)

X.509 使得在 Internet 上识别某人成为可能。基本而言，应该有一个称为“证书颁发机构”（或 CA）的实体，它将电子证书分配给需要它们的任何人。证书依赖于具有两个加密密钥（一个公共密钥和一个秘密密钥）的非对称加密算法。证书所有者可以将证书作为身份证明提供给另一方。证书由其所有者的公钥组成。使用此公钥加密的任何数据只能使用相应的密钥解密，该密钥由证书所有者持有。

使用 OpenSSL 提供对 MySQL 中加密连接的支持。有关 OpenSSL 支持的加密协议和密码的信息，请参阅[第 6.3.2 节，“加密连接 TLS 协议和密码”](encrypted-connection-protocols-ciphers.html).

笔记

从 MySQL 8.0.11 到 8.0.17，可以使用 wolfSSL 作为 OpenSSL 的替代方案来编译 MySQL。从 MySQL 8.0.18 开始，对 wolfSSL 的支持被删除，所有 MySQL 构建都使用 OpenSSL。

[](<>)

默认情况下，如果服务器支持加密连接，MySQL 程序会尝试使用加密连接，如果无法建立加密连接，则回退到未加密连接。有关影响加密连接使用的选项的信息，请参阅[第 6.3.1 节，“配置 MySQL 以使用加密连接”](using-encrypted-connections.html)和[加密连接的命令选项](connection-options.html#encrypted-connection-options).

MySQL 在每个连接的基础上执行加密，并且为给定用户使用加密可以是可选的或强制的。这使您可以根据各个应用程序的要求选择加密或未加密的连接。有关如何要求用户使用加密连接的信息，请参阅`要求`的条款[`创建用户`](create-user.html)中的声明[第 13.7.1.3 节，“创建用户语句”](create-user.html).另请参阅[`require_secure_transport`](server-system-variables.html#sysvar_require_secure_transport)系统变量在[第 5.1.8 节，“服务器系统变量”](server-system-variables.html)

可以在源服务器和副本服务器之间使用加密连接。看[第 17.3.1 节，“设置复制以使用加密连接”](replication-solutions-encrypted-connections.html).

有关使用来自 MySQL C API 的加密连接的信息，请参阅[支持加密连接](https://dev.mysql.com/doc/c-api/8.0/en/c-api-encrypted-connections.html).

也可以使用从 SSH 连接到 MySQL 服务器主机的加密进行连接。例如，请参见[第 6.3.4 节，“使用 SSH 从 Windows 远程连接到 MySQL”](windows-and-ssh.html).
