MySQL 使用 SSL 连接配置
2025-07-06 12:51
MySQL
SQL Server
Oracle
MySQL
PostgreSQL
NoSQL
大数据
其他数据库
Windows
Windows Server
Linux
macOS
嵌入式
APACHE
NGINX
redis
Docker
git
互联网
tomcat
Html/Css
JavaScript
jQuery
HTML5
Angular
React
Vue
小程序
架构设计
面向对象
设计模式
领域驱动设计
Android开发
iOS开发
Flutter
鸿蒙
其他手机开发
敏捷开发
项目与团队管理
软件工程其他
.NET
Java
Python
Go
PHP
C++
Ruby
Swift
C语言
Erlang
Delphi
Scala
R语言
Verilog
Dart
Rust
其他语言
asp
nodejs
读书区
翻译区
求职面试
计算机图形学
软件测试
菜谱
SEO技术
摄影
生活技巧
21
0
0
0
标题录入
封面图
在 MySQL 中使用 SSL 连接可以增强数据库连接的安全性,防止数据在传输过程中被窃听或篡改。以下是配置 MySQL 使用 SSL 连接的步骤。 --- ## ✅ 一、MySQL 服务器端配置(SSL) ### 1. 检查是否支持 SSL ```sql SHOW VARIABLES LIKE 'have_ssl'; ``` 如果返回 `have_ssl` 的值是 `YES`,说明 MySQL 支持 SSL;如果是 `DISABLED` 或 `NO`,则需要重新编译 MySQL 并启用 SSL 支持(通常默认是支持的)。 --- ### 2. 生成 SSL 证书(可选) 如果你还没有 SSL 证书,可以使用 OpenSSL 生成自签名证书: ```bash # 生成 CA 私钥 openssl genrsa -out ca-key.pem 2048 # 生成 CA 证书 openssl req -new -x509 -days 365 -key ca-key.pem -out ca-cert.pem # 生成服务器私钥 openssl genrsa -out server-key.pem 2048 # 生成服务器证书请求 openssl req -new -key server-key.pem -out server-req.pem # 用 CA 签名服务器证书 openssl x509 -req -days 365 -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem # 生成客户端私钥 openssl genrsa -out client-key.pem 2048 # 生成客户端证书请求 openssl req -new -key client-key.pem -out client-req.pem # 用 CA 签名客户端证书 openssl x509 -req -days 365 -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem ``` --- ### 3. 配置 MySQL 的 SSL 参数 编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`),添加以下内容: ```ini [mysqld] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem ``` > 替换为你的证书路径。 --- ### 4. 重启 MySQL 服务 ```bash sudo systemctl restart mysql ``` 或者根据系统不同使用: ```bash sudo service mysql restart ``` --- ### 5. 检查 SSL 是否启用 登录 MySQL 后执行: ```sql SHOW VARIABLES LIKE 'ssl%'; ``` 应该能看到类似如下结果: ``` +---------------+-----------------------------+ | Variable_name | Value | +---------------+-----------------------------+ | ssl_ca | /path/to/ca-cert.pem | | ssl_capath | | | ssl_cert | /path/to/server-cert.pem | | ssl_key | /path/to/server-key.pem | | ssl_ciphers | | | ssl_verify_mode | 0 | +---------------+-----------------------------+ ``` --- ## ✅ 二、客户端连接时使用 SSL ### 1. 使用命令行连接 ```bash mysql -u username -p --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem ``` 或者直接使用 SSL 连接: ```bash mysql -u username -p --ssl ``` --- ### 2. 在应用程序中使用 SSL 连接(以 Python 为例) ```python import mysql.connector config = { 'user': 'username', 'password': 'password', 'host': '127.0.0.1', 'database': 'test', 'ssl': { 'ca': '/path/to/ca-cert.pem', 'cert': '/path/to/client-cert.pem', 'key': '/path/to/client-key.pem' } } cnx = mysql.connector.connect(**config) ``` --- ## ✅ 三、强制使用 SSL 连接(可选) 在 MySQL 服务器上,可以设置只允许通过 SSL 连接的用户: ```sql CREATE USER 'secure_user'@'%' IDENTIFIED BY 'password' REQUIRE SSL; GRANT ALL PRIVILEGES ON *.* TO 'secure_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 这样,只有使用 SSL 的客户端才能连接该用户。 --- ## ✅ 四、常见问题排查 | 问题 | 解决方法 | |------|----------| | SSL 连接失败 | 检查证书路径、权限、证书是否有效 | | 客户端无法识别 SSL | 确保客户端支持 SSL,并正确指定证书参数 | | MySQL 不支持 SSL | 重新编译 MySQL 并启用 SSL 支持 | --- ## 📌 总结 | 步骤 | 内容 | |------|------| | 生成证书 | 使用 OpenSSL 生成 CA、server、client 证书 | | 配置 MySQL | 修改 my.cnf 添加 SSL 相关参数 | | 重启服务 | 使配置生效 | | 客户端连接 | 使用 `--ssl` 或指定证书文件连接 | | 强制 SSL | 设置用户只能通过 SSL 连接 | 如需进一步配置 SSL 加密算法、证书验证等,可以参考 [MySQL 官方文档](https://dev.mysql.com/doc/refman/8.0/en/secure-connections.html)。 如需我帮你生成证书或配置文件模板,也可以告诉我!
上一篇:
mysql主从复制,指定库和表
标题录入,一次不能超过6条
怎么分辨对方是朋友还是敌人
T:0.007887s,M:159.6 KB
返回顶部
留言
留言
评论