讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql镜像配置如何设置SSL加密_mysql镜像配置SSL安全连接配置教程

小婷小哥_6903

小婷小哥_6903

发布时间:2025-11-21 12:17:32

|

883人浏览过

|

来源于php中文网

原创

配置MySQL镜像SSL加密需生成证书并挂载至容器,通过my.cnf启用SSL,设置require_secure_transport=ON强制加密连接,启动后验证have_ssl=YES及连接加密状态,客户端连接时指定CA证书以确保安全通信。

mysql镜像配置如何设置ssl加密_mysql镜像配置ssl安全连接配置教程

MySQL 镜像配置 SSL 加密是为了在客户端与数据库服务器之间建立安全连接,防止数据在传输过程中被窃听或篡改。尤其是在使用 Docker 部署 MySQL 时,正确配置 SSL 是保障数据通信安全的重要步骤。下面介绍如何为 MySQL 镜像配置 SSL 安全连接。

生成 SSL 证书和密钥

MySQL 使用 OpenSSL 来实现 SSL 加密连接。你需要为服务器生成自签名证书和私钥,也可以使用 CA 签发的证书。

在主机上执行以下命令生成所需的文件:

# 创建存放证书的目录
mkdir -p ./mysql-ssl
cd ./mysql-ssl
<h1>生成 CA 私钥和证书</h1><p>openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=MySQL CA"</p><h1>生成服务器私钥和证书请求</h1><p>openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem -subj "/CN=mysql-server"
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem</p><h1>生成客户端证书(可选,用于双向认证)</h1><p>openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem -subj "/CN=mysql-client"
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3650 -CA ca.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem</p>

生成后你会得到以下几个关键文件:

  • ca.pem:CA 根证书
  • server-cert.pem:服务器证书
  • server-key.pem:服务器私钥
  • client-cert.pem 和 client-key.pem:客户端证书和私钥(如需双向验证)

配置 MySQL 镜像启用 SSL

使用官方 MySQL 镜像时,可以通过挂载证书文件并配置 my.cnf 来启用 SSL。

创建配置文件 my.cnf:

[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/server-cert.pem
ssl-key=/var/lib/mysql/server-key.pem
require_secure_transport=ON

说明:

  • ssl-ca、ssl-cert、ssl-key 指定证书路径
  • require_secure_transport=ON 强制所有连接必须使用 SSL

编写 docker-compose.yml 文件示例:

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
    ports:
      - "3306:3306"
    volumes:
      - ./mysql-ssl:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/ssl.cnf
    command: ['--default-authentication-plugin=mysql_native_password']

启动容器:

Docker Encyclopedia
Docker Encyclopedia

Docker 文档优先工作流:针对 Docker 特定问题、故障排除、命令规划、镜像/构建、容器/运行时操作及 Compose 等

下载
docker-compose up -d

验证 SSL 是否生效

进入 MySQL 容器并登录:

docker exec -it mysql-container mysql -u root -p

执行以下 SQL 查看 SSL 状态:

SHOW VARIABLES LIKE '%ssl%';

输出中应看到:

  • have_ssl 的值为 YES
  • ssl_ca、ssl_cert、ssl_key 显示正确路径

查看当前连接是否使用 SSL:

STATUS;

在输出中查找 “SSL” 字段,若显示 Cipher 则表示连接已加密。

客户端连接配置(例如使用 MySQL Workbench 或命令行)

连接时需要指定 CA 证书以验证服务器身份。

  • 在 MySQL Workbench 中新建连接,选择“SSL”标签页
  • 设置“SSL CA File”为本地的 ca.pem
  • 可选:上传客户端证书用于双向认证

命令行连接示例:

mysql -h 127.0.0.1 -u root -p \
  --ssl-mode=VERIFY_CA \
  --ssl-ca=./mysql-ssl/ca.pem \
  --ssl-cert=./mysql-ssl/client-cert.pem \
  --ssl-key=./mysql-ssl/client-key.pem

ssl-mode 可选值:

  • PREFERRED:优先使用 SSL
  • REQUIRED:必须使用 SSL(不验证证书)
  • VERIFY_CA:验证服务器证书是否由可信 CA 签发
  • VERIFY_IDENTITY:额外验证主机名

基本上就这些。只要证书生成正确、文件挂载无误、配置项写对,MySQL 镜像就能成功启用 SSL 加密连接。生产环境建议使用正式 CA 签发的证书,并开启双向认证增强安全性。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

4603

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

951

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

1209

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

6581

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

3323

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

6540

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

8981

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

1210

2024.04.29

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 193人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn