Mysql8配置SSL安全连接的详细指南

 更新时间:2025年06月17日 09:58:54   作者:石小千  
Mysql 8 默认启用SSL安全连接,也可以强制必须启用,这篇文章主要来和大家介绍一下如何在Mysql8中配置SSL安全连接,有需要的小伙伴可以了解下

概述

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

前提条件

  • 使用OpenSSL编译的MySQL服务器
  • 官网mysql安装包已经集成了,支持ssl自签名证书
  • 自签名证书文件系统自动生成,默认在数据存储目录下

[root@centos7-172-028-002-001 mysql]# ll /var/lib/mysql | grep pem
-rw------- 1 mysql mysql       1680 3月  18 22:03 ca-key.pem
-rw-r--r-- 1 mysql mysql       1108 3月  18 22:03 ca.pem
-rw-r--r-- 1 mysql mysql       1108 3月  18 22:03 client-cert.pem
-rw------- 1 mysql mysql       1676 3月  18 22:03 client-key.pem
-rw------- 1 mysql mysql       1680 3月  18 22:03 private_key.pem
-rw-r--r-- 1 mysql mysql        452 3月  18 22:03 public_key.pem
-rw-r--r-- 1 mysql mysql       1108 3月  18 22:03 server-cert.pem
-rw------- 1 mysql mysql       1680 3月  18 22:03 server-key.pem

因为是自签名证书,启动日志中会报一条警告信息

[Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.

Mysql 8手动配置SSL安全连接

修改配置文件

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

修改运行参数

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

SET PERSIST require_secure_transport=ON;

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

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

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

--ssl-mode=DISABLED|PREFERRED|REQUIRED|VERIFY_CA|VERIFY_IDENTITY

1.DISABLED

  • 完全不使用SSL加密
  • 所有通信都以明文传输
  • 安全性最低,性能最好
  • 适用于测试环境或内部安全网络

2.PREFERRED

  • 默认模式
  • 尝试使用SSL,失败则回退到非SSL
  • 对于Unix套接字连接不会加密
  • 平衡了安全性和兼容性

3.REQUIRED

  • 强制要求SSL加密
  • 如果服务器不支持SSL则连接失败
  • 不验证证书的有效性
  • 适用于需要加密但不关心证书来源的环境

4.VERIFY_CA

  • 要求SSL加密
  • 验证服务器证书是否由受信任的CA签发
  • 不验证主机名是否匹配
  • 比REQUIRED更安全

5.VERIFY_IDENTITY

  • 最严格的模式
  • 要求SSL加密
  • 验证CA证书
  • 验证主机名是否与证书匹配
  • 防止中间人攻击
  • 安全性最高,配置也最复杂

Mysql 8客户端连接验证

服务端开启了require_secure_transport=ON,客户端禁用SSL连接,被拒绝

[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=DISABLED
Enter password: 
ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

服务端开启了require_secure_transport=ON,客户端启用SSL连接,查看连接状态

[root@centos7-05145 ~]# mysql -h 172.28.2.1 -u root -p --ssl-mode=REQUIRED
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server 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' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql  Ver 8.4.2 for Linux on x86_64 (MySQL Community Server - GPL)Connection id:          8
Current database:


Current user:           root@192.168.5.145
SSL:                    Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.4.4 MySQL Community Server - GPL
Protocol version:       10
Connection:             172.28.2.1 via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
TCP port:               3306
Binary data as:         Hexadecimal
Uptime:                 2 min 44 sec

Threads: 2  Questions: 6  Slow queries: 0  Opens: 512  Flush tables: 3  Open tables: 26  Queries per second avg: 0.036
--------------

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

# require ssl 强制账号使用证书认证
CREATE USER 用户名@'%' IDENTIFIED BY 'password' require ssl;

# require x509 强制账号使用证书认证
CREATE USER 用户名@'%' IDENTIFIED BY 'password' require x509;

# 修改账号使用证书认证
ALTER USER '用户名'@'%'  require ssl;

到此这篇关于Mysql8配置SSL安全连接的详细指南的文章就介绍到这了,更多相关Mysql配置SSL安全连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中列转行和行转列总结解决思路

    MySQL中列转行和行转列总结解决思路

    最近工作中用到了好几次列转行,索性做个小总结,下面这篇文章主要给大家介绍了关于MYSQL如何列转行的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • MySQL 联合索引与Where子句的优化 提高数据库运行效率

    MySQL 联合索引与Where子句的优化 提高数据库运行效率

    网站系统上线至今,数据量已经不知不觉上到500M,近8W记录了。涉及数据库操作的基本都是变得很慢了,这篇文章主要是说明配置并不是数据库操作慢的主要原因
    2012-01-01
  • mysql常见问题解决

    mysql常见问题解决

    网上看到了不错的mysql下常见错误解决方法,特整理下,方便大家学习mysql
    2008-02-02
  • Mysql 8.0解压版下载安装以及配置的实例教程

    Mysql 8.0解压版下载安装以及配置的实例教程

    MySQL的安装分为两种,一种是安装版本,一种是免安装解压版本,一般老师都会推荐免安装解压版本,用起来更方便些,下面这篇文章主要给大家介绍了关于Mysql 8.0解压版下载安装以及配置的相关资料,需要的朋友可以参考下
    2022-01-01
  • mysql 5.7.16 zip包安装配置方法图文教程

    mysql 5.7.16 zip包安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.16 zip包安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 高并发状态下Replace Into造成的死锁问题解决

    高并发状态下Replace Into造成的死锁问题解决

    本文主要介绍了高并发状态下Replace Into造成的死锁问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 两大步骤教您开启MySQL 数据库远程登陆帐号的方法

    两大步骤教您开启MySQL 数据库远程登陆帐号的方法

    在工作实践和学习中,如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题,以下内容便是在工作和实践中总结出来的两大步骤,能帮助DBA们顺利的完成开启 MySQL 数据库的远程登陆帐号。
    2011-03-03
  • Mysql存储过程循环内嵌套使用游标示例代码

    Mysql存储过程循环内嵌套使用游标示例代码

    本节主要介绍了Mysql存储过程循环内如何嵌套使用游标,详细实现如下,需要的朋友不要错过
    2014-08-08
  • MySQL 使用规范总结

    MySQL 使用规范总结

    MySQL已经成为世界上最受欢迎的数据库管理系统之一,无论是用在小型开发项目上,还是用在构建那较大型的网站,MySQL都用实力证明了自己是一个稳定、可靠、快速、可信的系统,足以胜任任何数据存储业务的需要。本文总结了MySQL的使用规范
    2020-09-09
  • Mysql使用大全 从基础到存储过程

    Mysql使用大全 从基础到存储过程

    看到园子里总结的Mysql用法,我觉得没有我的全面,我的从登录到高级的存储过程都涉及到,这部分是我平常不会或是出现问题都会拿来看,不过现在就和我一起来使用命令模式学习一下数据库最基本的吧
    2012-05-05

最新评论