
如果未经授权访问您的数据,使用 SSL/TLS 保护 MySQL 服务器是至关重要的一步。SSL (Secure Sockets Layer 安全套接字层) 和 TLS (Transport Layer Security 传输层安全) 是加密协议,确保 MySQL 服务器和户端之间的数据传输是加密的。这意味着即使有人拦截了数据,他们也无法阅读它。
SSL/TLS 要求
要使用 SSL/TLS 保护 MySQL 服务器,您需要:
- MySQL 服务器端和客户端软件
- SSL 证书(CA 证书、服务器证书和服务器密钥)
生成 SSL 证书
您需要创建 SSL 证书以启用加密,您可以使用免费工具 OpenSSL 生成这些证书。
Install OpenSSL
sudo apt-get install openssl
Create a CA Certificate
openssl genpkey -algorithm RSA -out ca-key.pem
openssl req -new -x509 -key ca-key.pem -out ca-cert.pem
Create a Server Certificate
openssl genpkey -algorithm RSA -out server-key.pem
openssl req -new -key server-key.pem -out server-req.pem
openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -out server-cert.pem
Create a Client Certificate
openssl genpkey -algorithm RSA -out client-key.pem
openssl req -new -key client-key.pem -out client-req.pem
openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -out client-cert.pem
配置 MySQL 服务器
在生成证书之后,您需要配置 MySQL 服务器来使用它们。
Copy Certificates to MySQL Directory
将 ca-cert. pem、 server-cert. pem 和 server-key. pem 放在 MySQL 目录中 (例如:/etc/MySQL)
Edit MySQL Configuration File
打开 MySQL 配置文件(my.cnf 或 my.ini),在添加 [mysqld] 配置块中添加以下行:
[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
Restart MySQL Server
sudo systemctl restart mysql
配置 MySQL 客户端
MySQL 客户端在连接服务器时需要配置为使用 SSL/TLS
Copy Client Certificates
确保客户端机器可以访问 ca-cert.pem, client-cert.pem 和 client-key.pem 文件
Connect Using SSL
Use the following command to connect with SSL:
使用 SSL 连接服务器
mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u username -p
验证 SSL/TLS 连接
要验证连接是否使用 SSL/TLS,可以在连接到 MySQL 后运行以下命令:
SHOW VARIABLES LIKE '%ssl%';
查找 ssl_cipher 变量,如果它显示一个值,则表示您的连接已加密。
