- A+

MySQL 本身不默认加密客户端与服务器之间的数据传输,但可以通过启用 SSL/TLS 来实现数据在传输过程中的加密。这样可以防止敏感信息(如账号、密码、业务数据)在网络中被窃听或篡改。
启用 SSL 加密连接
MySQL 支持使用 SSL/TLS 协议对客户端和服务器之间的通信进行加密。只要客户端和服务器都配置了 SSL 证书,连接就可以自动加密。
检查是否支持 SSL:
登录 MySQL 执行以下命令:
SHOW VARIABLES LIKE 'have_ssl';
如果返回 YES,说明 MySQL 已编译支持 SSL。
再查看当前连接是否使用了 SSL:
STATUS;
或执行:
SHOW SESSION STATUS LIKE 'Ssl_cipher';
如果有非空值返回,表示当前连接已使用加密。
配置 MySQL 服务器端 SSL
MySQL 在较新版本中默认会自动生成 SSL 证书和私钥文件,通常位于数据目录下(如 ca.pem、server-cert.pem、server-key.pem)。如果没有,可手动创建。
生成自签名证书示例:
- 使用 openssl 生成 CA 证书
- 生成服务器证书请求并签名
- 生成客户端证书(可选,用于双向认证)
将生成的证书路径写入 MySQL 配置文件(my.cnf 或 my.ini):
[mysqld]
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
重启 MySQL 服务后,SSL 功能即生效。

图书《网页制作与PHP语言应用》,由武汉大学出版社于2006出版,该书为普通高等院校网络传播系列教材之一,主要阐述了网页制作的基础知识与实践,以及PHP语言在网络传播中的应用。该书内容涉及:HTML基础知识、PHP的基本语法、PHP程序中的常用函数、数据库软件MySQL的基本操作、网页加密和身份验证、动态生成图像、MySQL与多媒体素材库的建设等。

447
查看详情

客户端连接时启用加密
客户端连接时可通过参数明确要求加密传输。
使用命令行强制 SSL 连接:
mysql -u username -p --host=your_host \
--ssl-mode=REQUIRED
常见 ssl-mode 选项:
- PREFERRED:优先使用 SSL,不强制
- REQUIRED:必须加密,否则连接失败
- VERIFY_CA:验证 CA 证书
- VERIFY_IDENTITY:验证 CA 和主机名
推荐生产环境使用 VERIFY_IDENTITY 以增强安全性。
应用层额外加密建议
即使启用了 SSL,对于特别敏感的数据(如身份证号、银行卡号),可以在应用层先加密再存入数据库,例如使用 AES 加密函数:
INSERT INTO users (name, phone_encrypted)
VALUES ('张三', AES_ENCRYPT('13800138000', 'secret_key'));
读取时解密:
SELECT AES_DECRYPT(phone_encrypted, 'secret_key') FROM users;
注意:应用层加密密钥需妥善管理,不可硬编码在代码中。
基本上就这些。开启 SSL 是保障 MySQL 传输安全最有效的方式,结合应用层敏感字段加密,能大幅提升整体数据安全性。配置不复杂,但容易忽略。




