随着网络安全问题的日益严重,保护数据在传输过程中的安全显得尤为重要,如何确保你的 MySQL 数据库在客户端和服务器之间的通信是安全的,这将尤为重要
什么是加密连接?
加密连接指的是在客户端和数据库服务器之间建立一个安全的通道,以加密的形式传输数据。这样可以防止未授权的第三方监听并获取敏感信息。MySQL 支持使用 SSL/TLS 协议来加密通信,从而保护数据隐私与完整性。
为什么使用加密连接?
防止数据窃取:在网络上传输时,任何数据都可能被截获,通过加密可以有效防止这种情况。
数据完整性:加密连接可以确保数据在传输过程中没有被篡改或损坏。
身份验证:SSL/TLS 协议提供的证书机制可以验证连接双方的身份,确保连接的是合法的服务器或客户端。
如何配置 MySQL 8.4 使用加密连接
- 获取 SSL 证书
首先,需要生成或获取 SSL 证书。你可以使用以下命令生成自签名证书:
# 创建目录用于存放证书
mkdir certs
cd certs# 生成 CA 证书
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 365 -key ca-key.pem -out ca-cert.pem
# 生成服务器证书
openssl genrsa 2048 > server-key.pem
openssl req -new -key server-key.pem -out server-csr.pem
openssl x509 -req -in server-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -days 365
# 生成客户端证书
openssl genrsa 2048 > client-key.pem
openssl req -new -key client-key.pem -out client-csr.pem
openssl x509 -req -in client-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365
2. 配置 MySQL 使用 SSL
在 MySQL 配置文件 my.cnf 中,添加以下配置:
ini
[mysqld]
ssl-ca=/path/to/certs/ca-cert.pem
ssl-cert=/path/to/certs/server-cert.pem
ssl-key=/path/to/certs/server-key.pem
确保替换 /path/to/certs/ 为你的证书实际路径。- 重启 MySQL 服务
修改完配置文件后,把 MySQL 服务重启,以应用新的 SSL 配置:
bash
sudo systemctl restart mysql- 验证 SSL 配置
可以通过以下命令检查 MySQL 是否启用了 SSL:
SHOW VARIABLES LIKE '%ssl%';如果设置正确,会看到 have_ssl 的值为 YES,同时还会显示证书的相关路径。
- 客户端连接时使用 SSL
在连接 MySQL 时,可以在连接参数中指定 SSL 选项。例如,在命令行中连接:
mysql -u username -p --ssl-ca=/path/to/certs/ca-cert.pem --ssl-cert=/path/to/certs/client-cert.pem --ssl-key=/path/to/certs/client-key.pem在应用程序中使用相应的库连接 MySQL 时,也要确保启用 SSL 配置,具体方法依据不同的客户端库而不同。
最后一次更新于2026-03-01


