概述

MySQL社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表。这种是加密方式其实是基于文件加密的,一旦mysqld读取key启动后,将会解密整张表的数据,在mysql服务内,读取的数据都是解密后的,也就是说对客户端而言是无感知的。而这个key是本地存放的,mysql服务拥有读写这个key的权限。

总体看这种方案不太安全,原因是数据库文件是加密的,但只要能有mysql服务的账户,那么访问数据都是解密后的,加密不攻自破。而且解密key也是本地存放的,入侵者完全可以一并带走。这种方案只能保证入侵者只拖走了数据库文件后无法读取内容。

企业版MySQL额外的三种模块

如果是企业版的mysql,那么还有另外三种加密方案。

1.keyring_encrypted_file

和我之前说的社区版差不多的,只是多了一个key。这个key用于加密解密数据库用的key。安全性方面都差不多。

2.keyring_okv

相比本地存放key,本模块使用KMIP存取key,相对更加安全。

3.keyring_aws

整合aws的密匙管理服务来管理加解密的key。进一步提高key的管理安全性。

四个加密模块支持的加密类型

总结一下,四种方案都是文件加密,内存解密方案,区别在于加解密的key存放方案。推荐使用keyring_okv和keyring_aws,并确保mysql账户的安全性和严格区分账户权限。

另外2种安全性不大。

实施步骤

OK,现在简单讲一下最简单的keyring_file部署方案,提前说明下windows貌似无法使用这种方案,因为不知道为什么加密用的key总是无法生成。

1.使用最新版的mysql 5.7.21

使用yum apt 之类的工具安装最新版的mysql 或者 下载源码自行编译安装

sudo apt install mysql-5.7

2.启用加密模块

INSTALL PLUGIN keyring_file soname ‘keyring_file.so';

mysql> INSTALL PLUGIN keyring_file soname 'keyring_file.so';

Query OK, 0 rows affected (0.10 sec)

3.设置加密key存放路径

set global keyring_file_data='/root/mysql-keyring/keyring';

mysql> set global keyring_file_data='/var/lib/mysql-keyring/keyring';

Query OK, 0 rows affected (0.00 sec)

4.永久启用设置

上诉两个步骤都是临时的,重启服务都会失效,我们把配置写到配置文件里,确保重启服务后也能生效

[mysqld]

early-plugin-load=keyring_file.so

keyring_file_data=/root/mysql-keyring/keyring

5.查看key的存放路径

show global variables like ‘%keyring_file_data%';

mysql> show global variables like '%keyring_file_data%';

+-------------------+--------------------------------+

| Variable_name | Value |

+-------------------+--------------------------------+

| keyring_file_data | /var/lib/mysql-keyring/keyring |

+-------------------+--------------------------------+

1 row in set (0.00 sec)

6.查看启用的模块

查看下keyring_file模块是否已经被载入。

show plugins;

mysql> show plugins;

+----------------------------+----------+--------------------+-----------------+---------+

| Name | Status | Type | Library | License |

+----------------------------+----------+--------------------+-----------------+---------+

| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |

| mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL |

| sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL |

| PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL |

| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |

| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |

| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |

| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |

| INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

| INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

| INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

| INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

| INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL |

。。。。。。(省略N条)

| keyring_file | ACTIVE | KEYRING | keyring_file.so | GPL |

+----------------------------+----------+--------------------+-----------------+---------+

45 rows in set (0.00 sec)

7.加密现有的表

alter table table encryption='Y';

mysql> create table cc (id int);

Query OK, 0 rows affected (0.01 sec)

mysql> alter table cc encryption='Y';

Query OK, 0 rows affected (0.06 sec)

Records: 0 Duplicates: 0 Warnings: 0

8.取消加密

alter table table encryption='N';

mysql> alter table cc encryption='N';

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql keyring file_详解MySQL 整表加密解决方案 keyring_file相关推荐

  1. mysql keyring file_MySQL 整表加密解决方案 keyring_file详解

    说明 MySql社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表.这种是加密方式其实是基于文件加密的,一旦mysqld读取key启动后,将会解密整张表 ...

  2. mysql5.7 表加密_MySQL 整表加密解决方案 keyring_file

    说明 MySql社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表.这种是加密方式其实是基于文件加密的,一旦mysqld读取key启动后,将会解密整张表 ...

  3. mysql like escape_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)

    在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...

  4. mysql主从复制gtid_详解MySQL主从复制实战 - 基于GTID的复制

    基于GTID的复制 简介 基于GTID的复制是MySQL 5.6后新增的复制方式. GTID (global transaction identifier) 即全局事务ID, 保证了在每个在主库上提交 ...

  5. mysql errmsg unknown_详解MySQL Server 启动时出现bug的解决方法

    在用的mysql Server 无法启动.日志如下: 复制代码 代码示例: 130507 12:22:11  mysqld started 130507 12:22:11 [Warning] opti ...

  6. mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)

    A.1全库备份. 命令: mysqlbackup --defaults-file=/home/mysql-server/mysql3/my.cnf  --user=root --password=ro ...

  7. mysql 执行计划详解,Mysql中的explain执行计划详解(1)

    创建一个表test_explain,并添加入下的数据 mysql> create  table test_explain( a int primary key, b int); Query OK ...

  8. 详解mysql事务_详解MySQL执行事务的语法和流程

    摘要:MySQL 提供了多种存储引擎来支持事务. MySQL 提供了多种存储引擎来支持事务.支持事务的存储引擎有 InnoDB 和 BDB,其中,InnoDB 存储引擎事务主要通过 UNDO 日志和 ...

  9. mysql 枚举_详解MySQL数据类型之枚举类型ENUM的用法

    本节主要内容: MySQL数据类型之枚举类型ENUM MySQL数据库提供针对字符串存储的一种特殊数据类型:枚举类型ENUM,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧 ...

最新文章

  1. 多显示器设置检测不到_这台显示器让我欲罢不能:华硕ROG PG279QR 电竞显示器 评测...
  2. caffe python接口_ubuntu配置caffe的python接口pycaffe
  3. Python爬取京东商品信息以及评论存进MySQL
  4. 17.QT-事件处理分析、事件过滤器、拖放事件
  5. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
  6. UITableView定制accessoryView出现的连带问题
  7. 天际数见数据质量巡检架构优化
  8. Spring Boot系列(一) Spring Boot介绍和基础POM文件
  9. keep公众号就“借鉴”原创文章致歉:将停更一周
  10. php5实现web services
  11. python爬虫菜鸟教程-Python爬虫学习100练001
  12. centos jupyter 安装_centos6.4安装 jupyter-notebook
  13. loadrunner回放时IE模拟器弹出windows安全警告
  14. matlab2012b安装教程32位,Matlab2012B Windows 安装详细教程
  15. mysql8.0.25安装配置教程(windows 64位)最详细
  16. 如何备份android10,安卓手机系统怎么备份
  17. 【好题分享】适合C++初学者(数组的定义与初始化)
  18. java l老毕_她被毕福剑一手捧红,还给她牵线煤老板,老毕落难时她的做法超赞...
  19. 人口只有北京的 1/3,这个国家创立了全球一半的科技公司
  20. 音频信号 过零率 matlab,MATLAB计算信号短时平均过零率

热门文章

  1. Linux 网络协议栈开发基础篇—— 网桥br0
  2. 开发一个二方包,优雅地为系统接入ELK(elasticsearch+logstash+kibana)
  3. 2022-2028全球与中国中继系统市场现状及未来发展趋势
  4. 博客同步typora笔记图片|typora+picgo+阿里云oss
  5. 视觉SLAM14讲笔记04:ch7对极几何(epipolar geometry)
  6. 【数据库】MySQL奇淫技巧(基础篇)
  7. 在Cisco的ASA防火墙上实现IPSec虚拟专用网
  8. 想飞的种子----梦开始的地方【20100301】
  9. 360安全卫士:Web2.0的还很不够!
  10. 小程序图标icon换行问题|text标签与i标签