Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  Security  /  Using Encrypted Connections

8.3 使用加密连接

在 MySQL 客户端和服务器之间没有加密连接时,拥有网络访问权限的人可以监视所有流量并检查客户端和服务器之间发送或接收的数据。

当您需要安全地在网络上传输信息时,不加密的连接是不可接受的。为了使任何数据无法读取,使用加密。加密算法必须包含抵抗已知攻击种类的安全元素,如改变加密消息顺序或重播数据。

MySQL 支持客户端和服务器之间使用 TLS 协议进行加密连接。TLS 有时也被称为 SSL,但 MySQL 并不实际使用 SSL 协议,因为其加密方式较弱(参见第 8.3.2 节,“加密连接 TLS 协议和加密算法”)。

TLS 使用加密算法来确保公网上收到的数据可以被信任。它还具有检测数据变化、丢失或重播的机制。TLS 还包括使用 X.509 标准进行身份验证的算法。

X.509 允许在互联网上识别某人。在基本术语中,应该有一个称为““证书授权机构””(或 CA)的实体将电子证书分配给需要它们的人。证书依赖于非对称加密算法,它们拥有两个加密密钥(公钥和秘钥)。证书所有者可以将证书呈现给其他方作为身份证明。证书由证书所有者的公钥组成。使用该公钥加密的数据只能使用对应的秘钥进行解密,该秘钥由证书所有者持有。

MySQL 对加密连接的支持是通过 OpenSSL 提供的。关于 OpenSSL 支持的加密协议和加密算法,请参见第 8.3.2 节,“加密连接 TLS 协议和加密算法”

默认情况下,MySQL 实例在运行时链接到已安装的 OpenSSL 库,以支持加密连接和其他加密相关操作。你可以从源代码编译 MySQL 并使用 WITH_SSL CMake 选项指定特定的 OpenSSL 版本或替代 OpenSSL 系统包。在这种情况下,MySQL 将选择该版本。要了解如何实现,请参阅第 2.8.6 节,“配置 SSL 库支持”

你可以在运行时使用 Tls_library_version 系统状态变量来检查 OpenSSL 库的版本。

如果你编译 MySQL 使用某个 OpenSSL 版本,想要更改到不同的版本而不重新编译,可以通过编辑动态库加载路径(Unix 系统上是 LD_LIBRARY_PATH,Windows 系统上是 PATH)。删除编译的 OpenSSL 版本的路径,然后添加替代版本的路径,并将其置于其他 OpenSSL 库之前。在启动时,如果 MySQL 无法在路径中找到使用 WITH_SSL 指定的 OpenSSL 版本,它将使用路径中的第一个版本。

默认情况下,MySQL 程序尝试使用加密连接,如果无法建立加密连接,则降级到未加密连接。关于影响加密连接的选项,请参阅第8.3.1节,“配置 MySQL 使用加密连接”命令选项:加密连接

MySQL 对每个连接进行加密,并且对给定用户的加密可以是可选或强制。这使您能够根据单个应用程序的要求选择加密或未加密连接。关于如何要求用户使用加密连接,请参阅CREATE USER 语句的REQUIRE子句在第15.7.1.3节,“CREATE USER 语句”。另外,参阅require_secure_transport 系统变量在第7.1.8节,“服务器系统变量”

加密连接可以在源服务器和副本服务器之间使用。请参阅第19.3.1节,“设置加密连接的复制”

关于使用MySQL C API加密连接的信息,请参阅加密连接支持

也可以从SSH连接到MySQL服务器主机上使用加密连接。例如,请参阅第 8.3.4 节,“使用 SSH 从 Windows 远程连接 MySQL”