mysql配置SSL证书登录的实现


Posted in MySQL onSeptember 04, 2021

前言

国家等级保护三级安全要求,mysql 的 ssl 需要安全证书加密,这里需要研究一下,选几个账户演示下即可。mysql 的版本为 8.0.20

一、Mysql 启用 SSL 配置

1.1 检查是否开启 ssl

mysql> show variables like '%ssl%';
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| have_openssl       | YES             |  
| have_ssl           | YES             |  # 已开启ssl
| mysqlx_ssl_ca      |                 |
| mysqlx_ssl_capath  |                 |
| mysqlx_ssl_cert    |                 |
| mysqlx_ssl_cipher  |                 |
| mysqlx_ssl_crl     |                 |
| mysqlx_ssl_crlpath |                 |
| mysqlx_ssl_key     |                 |
| 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  |
+--------------------+-----------------+
17 rows in set (0.56 sec)

1.2 设置用户是否使用 SSL 连接

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
|          |
+----------+
1 row in set (0.05 sec)

默认用户是没有使用 SSL 登录的。
我们可以强制这个管理用户使用 SSL 登录。

alter user 'xxx'@'%' require ssl;
取消ssl验证:
alter user 'xxx'@'%' require none;

更改后,该账户就无法登录了,查看状态变成下面这种

mysql> select ssl_type from user where user = 'dev_fqr' ;
+----------+
| ssl_type |
+----------+
| ANY      |
+----------+
1 row in set (0.01 sec)

测试登录,本机无法直接登录。

[root@localhost data]# mysql -u dev_fqr -p
Enter password: 
ERROR 2026 (HY000): SSL connection error: SSL is required but the server doesn't support it

远程客户端无法直接登录:

mysql配置SSL证书登录的实现

1.3 使用 SSL 登录

要想通过 SSL 登录,就需要用到下面这几个证书,通过 client 证书 与 server 端进行校验通过才能登录成功。

mysql配置SSL证书登录的实现

1) 本机登录

在 data 目录下的三个文件证书登录。

[root@localhost data]# mysql -udev_fqr -pDev@fqr2021 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 8.0.22 MySQL Community Server - GPL
​
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
​
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.
​
You are enforcing ssl connection via unix socket. Please consider
switching ssl off as it does not make connection via unix socket
any more secure.
mysql>

2)navicate 远程客户端登录

把这三个证书下载下来

mysql配置SSL证书登录的实现

配置证书目录,即可远程访问:

mysql配置SSL证书登录的实现

二、总结

因为测评的时候不会看 JDBC 里面的配置,所以 JDBC 就不改了,不然要改动的地方非常的多,具体演示的时候可以用提前准备两个账号,到时候用客户端连接即可。
目前两台 mysql 的ssl 用户如下:

mysql配置SSL证书登录的实现

到此这篇关于mysql配置SSL证书登录的实现的文章就介绍到这了,更多相关mysql SSL证书登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

MySQL 相关文章推荐
Mysql Show Profile
Apr 05 MySQL
MySQL安装后默认自带数据库的作用详解
Apr 27 MySQL
MySQL 隔离数据列和前缀索引的使用总结
May 14 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL中JOIN连接的基本用法实例
Jun 05 MySQL
mysql幻读详解实例以及解决办法
Jun 16 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
MySQL约束超详解
Sep 04 #MySQL
MySQL中的隐藏列的具体查看
Sep 04 #MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 #MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 #MySQL
MySQL8.0的WITH查询详情
Aug 30 #MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 #MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 #MySQL
You might like
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php单一接口的实现方法
2015/06/20 PHP
xmlHTTP实例
2006/10/24 Javascript
javascript 播放器 控制
2007/01/22 Javascript
javascript add event remove event
2008/04/07 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
JS回调函数深入理解
2019/10/16 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
机器学习10大经典算法详解
2017/12/07 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
Oracle性能调优原则
2012/05/03 面试题
地理科学专业毕业生求职信
2013/10/15 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
无犯罪记录证明样本
2015/06/16 职场文书