当前位置: 代码网 > it编程>数据库>Mysql > Mysql8配置SSL安全连接的详细指南

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

2025年06月17日 Mysql 我要评论
概述mysql 8 默认启用ssl安全连接,也可以强制必须启用。建议手动生成自签名证书和key并配置到服务端和客户端路径里,也可以直接使用mysql默认生成的。前提条件使用openssl编译的mysq

概述

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安全连接内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com