news 2026/9/5 18:10:02

Mysql8 启用SSL安全连接

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mysql8 启用SSL安全连接

概述

Mysql 8 默认启用SSL安全连接,也可以强制必须启用。建议手动生成自签名证书和key并配置到服务端和客户端路径里,也可以直接使用mysql默认生成的。

前提条件

https://dev.mysql.com/doc/refman/8.4/en/using-encrypted-connections.html#using-encrypted-connections-server-side-startup-configuration

  1. 使用OpenSSL编译的MySQL服务器
  2. 官网mysql安装包已经集成了,支持ssl自签名证书
  3. 自签名证书文件系统自动生成,默认在数据存储目录下
[root@centos7-172-028-002-001 mysql]# ll /var/lib/mysql | grep pem-rw-------1mysql mysql168031822:03 ca-key.pem -rw-r--r--1mysql mysql110831822:03 ca.pem -rw-r--r--1mysql mysql110831822:03 client-cert.pem -rw-------1mysql mysql167631822:03 client-key.pem -rw-------1mysql mysql168031822:03 private_key.pem -rw-r--r--1mysql mysql45231822:03 public_key.pem -rw-r--r--1mysql mysql110831822:03 server-cert.pem -rw-------1mysql mysql168031822:03 server-key.pem
  1. 因为是自签名证书,启动日志中会报一条警告信息
[Warning][MY-010068][Server]CA certificate ca.pem is self signed.

Mysql 8手动配置SSL安全连接

https://dev.mysql.com/doc/refman/8.4/en/using-encrypted-connections.html#mandatory-encrypted-connections

修改配置文件

[mysqld]# 强制所有网络连接使用ssl。socket不受限制(默认就是安全状态。如果客户端强制使用SSL连接,允许登录,但会提示建议取消SSL的信息)require_secure_transport=ON

修改运行参数

进入数据库手动设置正在运行的数据库

SET PERSISTrequire_secure_transport=ON;
  • 设置成功后,会写入数据目录下的 mysqld-auto.cnf文件
  • mysql重启后会自动读取这个文件,实现持久化修改
catmysqld-auto.cnf{"Version":2,"mysql_dynamic_variables":{"require_secure_transport":{"Value":"ON","Metadata":{"Host":"","User":"dba","Timestamp":1788524612742190}}}}[root@vm172-16-0-84 mysql_data]#

Mysql 8服务器端配置SSL安全连接

https://dev.mysql.com/doc/refman/8.4/en/using-encrypted-connections.html#using-encrypted-connections-server-side-startup-configuration

[mysqld]# 可以自行创建ca证书、服务端证书和KEYssl_ca=ca.pemssl_cert=server-cert.pemssl_key=server-key.pem# 如果开启,那么强制客户端必须使用SSL连接;如果关闭,可以指定账号使用SSL连接require_secure_transport=ON

以下示例

  1. 简化生成自签名证书
# 创建目录mkdir-p/var/lib/mysql/ssl&&cd/var/lib/mysql/ssl# 生成KEYopenssl genrsa-outmysql-key.pem2048# 生成自签名证书openssl req-x509-new-keymysql-key.pem-days3650-outmysql-cert.pem# 赋权chmod600/var/lib/mysql/ssl/*chown-Rmysql:mysql /var/lib/mysql/ssl
  1. 查看证书有效期
openssl x509-inmysql-cert.pem-noout-dates
  1. 配置my.cnf
# 配置自定义证书和key。使用简化自签名证书,ssl_ca与ssl_cert一样ssl_ca=/var/lib/mysql/ssl/mysql-cert.pemssl_cert=/var/lib/mysql/ssl/mysql-cert.pemssl_key=/var/lib/mysql/ssl/mysql-key.pem# 如果开启,那么强制客户端必须使用SSL连接;如果关闭,可以指定账号使用SSL连接# 如果不配置上述自定义证书,默认使用mysql系统生成的自签名证书,在/var/lib/mysql/下require_secure_transport=ON

Mysql 8客户端配置SSL安全连接

https://dev.mysql.com/doc/refman/8.4/en/using-encrypted-connections.html#using-encrypted-connections-client-side-configuration

--ssl-mode=DISABLED|PREFERRED|REQUIRED|VERIFY_CA|VERIFY_IDENTITY
  1. DISABLED
  • 完全不使用SSL加密
  • 所有通信都以明文传输
  • 安全性最低,性能最好
  • 适用于测试环境或内部安全网络
  1. PREFERRED
  • 默认模式
  • 尝试使用SSL,失败则回退到非SSL
  • 对于Unix套接字连接不会加密
  • 平衡了安全性和兼容性
  1. REQUIRED
  • 强制要求SSL加密
  • 如果服务器不支持SSL则连接失败
  • 不验证证书的有效性
  • 适用于需要加密但不关心证书来源的环境
  1. VERIFY_CA
  • 要求SSL加密
  • 验证服务器证书是否由受信任的CA签发
  • 不验证主机名是否匹配
  • 比REQUIRED更安全
  1. VERIFY_IDENTITY
  • 最严格的模式
  • 要求SSL加密
  • 验证CA证书
  • 验证主机名是否与证书匹配
  • 防止中间人攻击
  • 安全性最高,配置也最复杂

Mysql 8客户端连接验证

  1. 服务端开启了require_secure_transport=ON,客户端禁用SSL连接,被拒绝
[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=DISABLEDEnter password: ERROR3159(HY000): Connections using insecure transport are prohibitedwhile--require_secure_transport=ON.
  1. 服务端开启了require_secure_transport=ON,客户端启用SSL连接,查看连接状态
[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=REQUIREDEnter password: Welcome to the MySQL monitor. Commands end with;or\g. Your MySQL connectionidis10Server version:8.4.4 MySQL Community Server - GPL Copyright(c)2000,2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type'help;'or'\h'forhelp. Type'\c'toclearthe current input statement. mysql>status -------------- mysql Ver8.4.2forLinux on x86_64(MySQL Community Server - GPL)Connection id:8Current database: Current user: root@192.168.5.145 SSL: Cipherinuse is ECDHE-RSA-AES128-GCM-SHA256 Current pager: stdout Using outfile:''Using delimiter:;Server version:8.4.4 MySQL Community Server - GPL Protocol version:10Connection:172.28.2.1 via TCP/IP Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 TCP port:3306Binary data as: Hexadecimal Uptime:2min44sec Threads:2Questions:6Slow queries:0Opens:512Flush tables:3Open tables:26Queries per second avg:0.036--------------

Mysql 8 创建使用SSL安全连接的账号

# require ssl 强制账号使用证书认证CREATEUSER用户名@'%'IDENTIFIED BY'password'require ssl;# require x509 强制账号使用证书认证CREATEUSER用户名@'%'IDENTIFIED BY'password'require x509;# 修改账号使用证书认证ALTERUSER'用户名'@'%'require ssl;

Mysql 8 服务端查看SSL状态

# 查看ssl 配置mysql>SHOW VARIABLES LIKE'%ssl%';+-------------------------------------+-----------------+|Variable_name|Value|+-------------------------------------+-----------------+|admin_ssl_ca|||admin_ssl_capath|||admin_ssl_cert|||admin_ssl_cipher|||admin_ssl_crl|||admin_ssl_crlpath|||admin_ssl_key|||mysqlx_ssl_ca|||mysqlx_ssl_capath|||mysqlx_ssl_cert|||mysqlx_ssl_cipher|||mysqlx_ssl_crl|||mysqlx_ssl_crlpath|||mysqlx_ssl_key|||performance_schema_show_processlist|OFF||ssl_ca|ca.pem||ssl_capath|||ssl_cert|server-cert.pem||ssl_cipher|||ssl_crl|||ssl_crlpath|||ssl_fips_mode|OFF||ssl_key|server-key.pem||ssl_session_cache_mode|ON||ssl_session_cache_timeout|300|+-------------------------------------+-----------------+25rowsinset(0.01sec)# 查看 TLS 版本mysql>SHOW VARIABLES LIKE'tls_version';+---------------+-----------------+|Variable_name|Value|+---------------+-----------------+|tls_version|TLSv1.2,TLSv1.3|+---------------+-----------------+1rowinset(0.01sec)# 查看强制开启状态mysql>SHOW VARIABLES LIKE'require_secure_transport';+--------------------------+-------+|Variable_name|Value|+--------------------------+-------+|require_secure_transport|ON|+--------------------------+-------+1rowinset(0.00sec)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 18:10:01

嵌入式QRS波检测:ANSI-C实现的Pan-Tompkins算法

简介:这是一份面向嵌入式开发者、生物医学工程学习者及实时信号处理初学者的轻量级 Pan-Tompkins QRS 波检测算法实现,解决心电信号中 R 峰实时定位这一核心问题,适用于便携设备、低功耗终端或教学实验等资源受限场景。压缩包共10个文件&…

作者头像 李华
网站建设 2026/9/5 18:09:49

FPGA图像处理工程闭环:从OV7670到HDMI圆检测实战

简介:本资源是第五届FPGA竞赛0326队伍提交的完整参赛作品,聚焦基于Xilinx Virtex-7 010 FPGA平台的实时图像处理与圆检测系统实现,面向嵌入式视觉、数字图像处理及FPGA硬件加速方向的学习者与竞赛备赛者。项目涵盖图像灰度化、高斯滤波、Cann…

作者头像 李华
网站建设 2026/9/5 18:09:34

免费解锁 WeMod Pro:Wand-Enhancer 三步上手指南

免费解锁 WeMod Pro:Wand-Enhancer 三步上手指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 用 WeMod 免费版被 2 小时使用限制打断…

作者头像 李华
网站建设 2026/9/5 18:05:19

智能麻将出牌组件

开篇引言​ 麻将作为一款风靡全球的策略性游戏,其复杂的规则和多变的牌局给玩家带来了无尽乐趣。在数字化时代,运用编程技术为麻将游戏赋予智能,实现自动出牌功能,不仅能提升玩家体验,还能深入探索算法在博弈游戏中的…

作者头像 李华