一、SSL介绍

SSL(Secure Socket Layer:安全套接字层)利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。

SSL协议提供的功能主要有:

1、数据传输的机密性:利用对称密钥算法对传输的数据进行加密。
           2.、身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。
           3、消息完整性验证:消息传输过程中使用MAC算法来检验消息的完整性。

如果用户的传输不是通过SSL的方式,那么其在网络中数据都是以明文进行传输的,而这给别有用心的人带来了可乘之机。所以,现在很多大型网站都开启了SSL功能。同样地,在我们数据库方面,如果客户端连接服务器获取数据不是使用SSL连接,那么在传输过程中,数据就有可能被窃取。

二、MySQL5.7 SSL启用

2.1 通过命令查看是否开启SSL

show global variables like '%ssl%';

当"have_ssl" 为YES的时候,说明数据库是已经开启支持SSL加密连接方式的。

2.2 查看当前登录连接是否是通过SSL加密方式连接

2.3 如果没有支持开启SSL,则需要在启动安装mysql_ssl_rsa_setup 使其能支持SSL 功能

若未开启,通过以下步骤:

  • 关闭MySQL服务
  • 运行如下命令:
    mysql_ssl_rsa_setup –-data-dir=/data/mysql-ssl --uid=mysql
    其中:–-data-dir:指定证书和密钥存放位置;–uid:指定所属用户
  • 查看生成的密钥和证书

2.4 MySQL配置文件

强制ssl验证
在[mysqld]下添加如下代码:
require_secure_transport = ON
指定服务端密钥和证书路径
在[mysqld]下添加如下代码:
ssl-ca = /home/tools/mysql/ca.pem
ssl-cert = /home/tools/mysql/server-cert.pem
ssl-key = /home/tools/mysql/server-key.pem
指定客户端密钥和证书路径
在[client]下添加如下代码:
ssl-ca = /home/tools/mysql/ca.pem
ssl-cert = /home/tools/mysql/client-cert.pem
ssl-key = /home/tools/mysql/client-key.pem

三、配置SSL

3.1 首先登录数据库,查看安装路径

show variables like 'datadir';

3.2 知道数据库安装路径之后,查看是否生成了相关秘钥文件

ll /home/tools/mysql/*.pem

 3.3 添加ssl参数到etc/my.cnf配置文件

[mysql]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem

3.4 然后使用命令重启

systemctl restart mysqld

3.5 给用户设置SSL

老用户直接修改
ALTER USER 'root'@'19.130.%' REQUIRE SSL;
FLUSH PRIVILEGES;
创建新用户
GRANT ALL PRIVILEGES ON *.* TO 'ssl_test'@'%' IDENTIFIED BY 'ssl_test' REQUIRE SSL;
FLUSH PRIVILEGES;

然后在执行2.2的操作查看数据库连接是否是已经是SSL加密校验

参考文章地址:

MySQL 5.7.18 加密连接mysql_ssl_rsa_setuphttps://www.linuxidc.com/Linux/2017-10/148131.htmMySQL5.7配置SSL加密https://www.cnblogs.com/biaopei/p/13039321.html  小笔记:

https://www.linuxidc.com/Linux/2017-10/148131.htm
https://www.cnblogs.com/biaopei/p/13039321.html查看数据库安装目录
show variables like 'datadir';查看ssl参数状态,查看have_ssl,为YES,这表示已经开始支持SSL了
show global variables like '%ssl%';show global status like '%ssl%';show status like 'ssl_cipher';\s 和 status  命令查看数据库连接信息查看证书过期时间
SHOW STATUS LIKE 'Ssl_server_not%';证书文件:
ca-key.pem # CA私钥
ca.pem # 自签的CA证书,客户端连接也需要提供
client-cert.pem # 客户端连接服务器端需要提供的证书文件
client-key.pem # 客户端连接服务器端需要提供的私钥文件
private_key.pem # 私钥/公钥对的私有成员
public_key.pem # 私钥/公钥对的共有成员
server-cert.pem # 服务器端证书文件
server-key.pem # 服务器端私钥文件设置用户使用SLL登录
ALTER USER david@'%' REQUIRE SSL;
FLUSH PRIVILEGES;数据库配置SLL
登录数据库-查看数据库安装目录
show variables like 'datadir';1、在etc/my.cnf 文件配置
[mysql]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem[mysqld]
ssl-ca=/var/lib/mysql/ca.pem
ssl-cert=/var/lib/mysql/client-cert.pem
ssl-key=/var/lib/mysql/client-key.pem2、systemctl restart mysqld  重启然后登陆数据库查看  \s或者status1、在 /etc/pam.d/system-auth文件配置
auth        required      pam_tally2.so deny=5 unlock_time=600
2、 添加环境变量vi ~/.bashrcexport PASS_MAX_DAYS=180
export PASS_MIN_DAYS=0
export PASS_MIN_LEN=5
export PASS_WARN_AGE=7source ~/.bashrc
echo $PASS_WARN_AGE3、查看ssl参数状态,查看have_ssl,为YES,这表示已经开始支持SSL了
show global variables like '%ssl%';/etc/profile
export TMOUT=600
source etc/profile
echo $TMOUT使用修改.bashrc文件(在用户的家目录下)进行环境变量的编辑,只对当前用户有用。使用修改 /etc/profile 文件进行环境变量的编辑,是对所有用户有用。大家一定要注意区别。

Linux配置mysql数据库SSL加密相关推荐

  1. linux配置mysql数据库_Linux下配置mysql数据库

    1 linux下安装mysql数据库 1.将安装包上传到linux目录下 /usr/local/wollo 2.使用 tar命令在当前目录下解压mysql 解压命令为: [root@bogon wol ...

  2. Kettle配置MySQL的SSL加密连接

    环境: os: windows kettle: 8.2.0.0-342 前提 MySQL已配置ssl加密连接,详见MySQL配置SSL加密连接 kettle的安装目录lib中已添加正确的MySQL连接 ...

  3. [Linux 配置数据库] Linux配置Mysql 数据库

    不要吐槽我 我是自己保存看的 有点乱 有数据库配置问题 可以咨询我! 数据库地址 安装mysql5.7 1.先把postfix 和mariadb-libs卸载掉,不然的会有依赖包冲突: [root@w ...

  4. Linux下MySQL数据库主从同步配置

    操作系统:CentOS 6.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说 ...

  5. linux服务器mysql数据库新建数据库并配置数据库用户

    linux服务器mysql数据库新建数据库并配置数据库用户 第一步:进入数据库 mysql -uroot -p 提示输入密码,输入你的root用户密码(默认不显示) 如下图: 第二步:创建一个数据库 ...

  6. LINUX 下 配置MySQL数据库集群

    LINUX 下 配置MySQL数据库集群 MySQL数据库集群进行正确配置步骤(1) 此文章主要向大家讲述的是对MySQL数据库集群进行正确配置的实际操作步骤,以及对其概念的讲述,如果你对其相关的实际 ...

  7. Qt配置MySql数据库驱动(linux)

    Qt配置MySql数据库驱动(linux)

  8. Docker MySQL开启SSL加密传输方案

    Docker MySQL开启SSL加密传输方案 产品:Docker MySQL 版本: 5.6 环境: CentOS Linux 7 文章目录 Docker MySQL开启SSL加密传输方案 方案背景 ...

  9. 数据库sql linux,linux安装mysql数据库

    linux安装mysql数据库 环境如下: Linux:CentOS release 6.7(Final) 64位 Mysql:mysql-5.6.31-linux-glibc2.5-x86_64.t ...

最新文章

  1. HTML引用公共组件
  2. 怎样在两小时内搞定 OpenStack 部署?
  3. 如何把Office365的更新从半年通道改成月度通道
  4. Python基础----python的使用(二)
  5. 萨义德与巴伦博依姆关于音乐和文学的对话
  6. 零基础入门深度学习(4) - 卷积神经网络
  7. Linux系统中安装软件的三种方法(二)
  8. 如何优雅地将Markdon格式文件md转为pdf?(使用typora)
  9. jquery实现简单的滑动解锁
  10. Cesium 场景设置~黑白、夜视和描边
  11. ubuntu20.04 常用开发工具整理
  12. 什么是ARM TCM内存
  13. python二级考试难不难_计算机二级python考试难吗
  14. 树莓派语音控制开关灯
  15. 全国各地土特产一览表
  16. CSS 仿谷歌input输入框,失焦时标题在输入框中,聚焦标题上移
  17. python中的pymysql模块
  18. 2020最流行的React组件库推荐
  19. [小程序开发] silk 转 MP3 ,第三步
  20. 如何使用开源搜索引擎制作属于自己的个人网络?

热门文章

  1. 自然几何之分形(3)
  2. 引导学生发展计算思维能力
  3. ElasticSearch知识day02
  4. 包容与信任是最好的激励
  5. idea使用checkStyle
  6. 如何开一个minecraft Java服务器
  7. 0.9.2、线程池——核心线程数、阻塞队列、最大线程数之间的关系
  8. STM32定时器-输入捕获
  9. jpcap(使用方法)
  10. Pythonxy批量修改变量名