文档首页
MySQL 8.4 参考手册
相关文档 下载此手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  安全  /  使用加密连接

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 库。

如果您使用一个版本的 OpenSSL 编译 MySQL,并且想要在不重新编译的情况下更改为另一个版本,您可以通过编辑动态库加载器路径 (LD_LIBRARY_PATH 在 Unix 系统上或 PATH 在 Windows 系统上) 来完成。删除到已编译的 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”