如何配置mysql ssl_mysql加密通信设置
发布时间 - 2025-12-27 00:00:00 点击率:次MySQL SSL配置通过加密通道防止数据窃听,需生成CA证书、服务器证书和私钥,配置服务端SSL参数并重启,强制用户REQUIRE SSL,客户端连接时指定ssl-mode及CA证书路径。
MySQL SSL 配置就是让客户端和服务器之间用加密通道通信,防止密码、数据在传输中被窃听。核心是生成或获取合法的 SSL 证书和密钥文件,并在 MySQL 服务端和客户端正确启用。
准备 SSL 证书和密钥文件
MySQL 要求三类文件:CA 证书(ca.pem)、服务器证书(server-cert.pem)和服务器私钥(server-key.pem)。推荐用 OpenSSL 自签(测试/内网可用),生产环境建议使用受信任 CA 签发的证书。
快速生成自签名证书(在 MySQL 数据目录外安全位置执行):
- 生成 CA 密钥和证书:
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem - 生成服务器私钥和证书请求:
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem - 用 CA 签发服务器证书:
openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
生成后把 ca.pem、server-cert.pem、server-key.pem 放到 MySQL 配置能读取的路径(如
/etc/mysql/ssl/),并确保 MySQL 用户有读权限。
配置 MySQL 服务端启用 SSL
编辑 MySQL 配置文件(通常是 /etc/my.cnf 或 /etc/mysql/mysqld.cnf),在 [mysqld] 段添加:
- ssl-ca = /etc/mysql/ssl/ca.pem
- ssl-cert = /etc/mysql/ssl/server-cert.pem
- ssl-key = /etc/mysql/ssl/server-key.pem
重启 MySQL:
sudo systemctl restart mysql(或 mysqld)
登录 MySQL 执行:
SHOW VARIABLES LIKE '%ssl%';
确认 have_ssl 为 YES,且 ssl_ca、ssl_cert、ssl_key 显示对应路径。
强制用户走 SSL 连接
创建或修改用户时指定 REQUIRE SSL,例如:
- 新建用户:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'pwd123' REQUIRE SSL; - 修改已有用户:
ALTER USER 'appuser'@'%' REQUIRE SSL;
之后该用户连接必须提供客户端证书(可选)或至少启用加密通道。验证是否生效:
SELECT user, host, ssl_type FROM mysql.user WHERE user = 'appuser';
结果中 ssl_type 应为 ANY(表示仅需 SSL 加密,不校验客户端证书)或 X509(要求客户端证书)。
客户端连接启用 SSL
命令行连接示例(Linux/macOS):
mysql -u appuser -p --ssl-mode=REQUIRED -h db.example.com
如果要验证服务器证书(推荐):
mysql -u appuser -p --ssl-mode=VERIFY_IDENTITY --ssl-ca=/path/to/ca.pem -h db.example.com
应用连接时(如 Python PyMySQL)需显式传入 SSL 参数:
ssl={'ca': '/path/to/ca.pem'},并设置 ssl_mode='VERIFY_IDENTITY'。
注意:MySQL 8.0+ 默认 --ssl-mode=REQUIRED,但旧版本或某些客户端可能默认禁用,务必显式指定。
# mysql
# linux
# python
# node
# app
# ssl
# mac
# macos
# 配置文件
# 加密通信
# cos
# red
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何破解联通资金短缺导致的基站建设难题?
如何在局域网内绑定自建网站域名?
网站页面设计需要考虑到这些问题
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Android Socket接口实现即时通讯实例代码
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何用低价快速搭建高质量网站?
Swift中swift中的switch 语句
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
利用JavaScript实现拖拽改变元素大小
如何为不同团队 ID 动态生成多个独立按钮
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
如何快速上传建站程序避免常见错误?
焦点电影公司作品,电影焦点结局是什么?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel如何创建自定义中间件?(Middleware代码示例)
如何快速登录WAP自助建站平台?
Laravel如何处理表单验证?(Requests代码示例)
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel PHP版本要求一览_Laravel各版本环境要求对照
Laravel如何使用Blade模板引擎?(完整语法和示例)
html如何与html链接_实现多个HTML页面互相链接【互相】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Java解压缩zip - 解压缩多个文件或文件夹实例
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
晋江文学城电脑版官网 晋江文学城网页版直接进入
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Python面向对象测试方法_mock解析【教程】
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何在腾讯云服务器上快速搭建个人网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Android滚轮选择时间控件使用详解
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel如何处理和验证JSON类型的数据库字段
如何批量查询域名的建站时间记录?
如何用PHP工具快速搭建高效网站?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何在 Pandas 中基于一列条件计算另一列的分组均值
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Laravel怎么在Blade中安全地输出原始HTML内容
JavaScript如何实现倒计时_时间函数如何精确控制
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel如何创建自定义Artisan命令?(代码示例)
上一篇:C++中发声函数Beep用法
上一篇:C++中发声函数Beep用法

