MySQL5.7开始支持表空间加密了,增强了MySQL的数据文件的安全性,这是一个很不错的一个功能,这个特性默认是没有启用的,要使用这个功能要安装插件keyring_file。

下面就来看看怎么安装,安装这个插件不用重启MySQL

1.安装插件

1.1 安装插件

(mysql5.7)root@localhost [(none)]> INSTALL PLUGIN keyring_file  soname 'keyring_file.so';
Query OK, 0 rows affected ( 0.01 sec)

2.创建密钥文件目录

mkdir -p /ssd01/3306/mysql-keyring/

chown -R mysql.mysql /ssd01/3306/mysql-keyring/

chmod 750  /ssd01/3306/mysql-keyring/

3.设置KEY文件,这个是动态参数,可以直接设置

(mysql5.7)root@localhost [(none)]> set global keyring_file_data='/ssd01/3306/mysql-keyring/keyring';

Query OK, 0 rows affected (0.00 sec)

(mysql5.7)root@localhost [(none)]>

4.重要事情说三遍:更新配置文件,避免遗忘更新配置文件,避免下次重启出问题

在my.cnf的[mysqld]段,加这两行

early-plugin-load=keyring_file.so

keyring_file_data=/ssd01/3306/mysql-keyring/keyring

##演示一下没有把keyring_file_data写到配置文件的情况。

KEY文件默认在base目录

(mysql5.7)root@localhost [(none)]> show global variables like '%keyring_file_data%';

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

| Variable_name     | Value                            |

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

| keyring_file_data | /usr/local/mysql/keyring/keyring |

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

1 row in set (0.00 sec)

插件还是在的

(mysql5.7)root@localhost [(none)]> 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     |

| 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     |

| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL            | GPL     |

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

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

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

| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |

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

| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |

| partition                  | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |

| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL            | GPL     |

| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL            | GPL     |

| ngram                      | ACTIVE   | FTPARSER           | NULL            | GPL     |

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

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

45 rows in set (0.00 sec)

访问加密的表会报错,找不到master_key

(mysql5.7)root@localhost [test]> show create table test_1;
ERROR 3185 (HY000): Can't find master key from keyring, please check keyring plugin is loaded.

2.测试加密表

(mysql5.7)root@localhost [(none)]> use test11;

Database changed

(mysql5.7)root@localhost [test11]> alter table test1 encryption='Y';

Query OK, 17 rows affected (0.04 sec) Records: 17  Duplicates: 0  Warnings: 0

查看一下information_schema.tables 看看是否加密成功

(mysql5.7)root@localhost [test11]> select * from information_schema.tables where CREATE_OPTIONS like '%ENCRYPTION="Y"%'\G;

*************************** 1. row ***************************

TABLE_CATALOG: def

TABLE_SCHEMA: test11

TABLE_NAME: test1

TABLE_TYPE: BASE TABLE

ENGINE: InnoDB

VERSION: 10

ROW_FORMAT: Dynamic

TABLE_ROWS: 17

AVG_ROW_LENGTH: 963

DATA_LENGTH: 16384

MAX_DATA_LENGTH: 0

INDEX_LENGTH: 16384

DATA_FREE: 0

AUTO_INCREMENT: 102

CREATE_TIME: 2016-06-21 15:17:33

UPDATE_TIME: 2016-06-21 15:17:33

CHECK_TIME: NULL

TABLE_COLLATION: utf8_general_ci

CHECKSUM: NULL

CREATE_OPTIONS: ENCRYPTION="Y"

TABLE_COMMENT:

1 row in set (0.03 sec)

(mysql5.7)root@localhost [test11]>

也许有人问,我这个支持在线DDL么,其实想一下,加密表空间应该是拷贝表方式。

(mysql5.7)root@localhost [test]> alter table test_1 encryption='Y',ALGORITHM=INPLACE,LOCK=none;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Invalid encryption option.. Try ALGORITHM=COPY.
(mysql5.7)root@localhost [test]>

解密表空间

(mysql5.7)root@localhost [test]> alter table test1 encryption='N';

Query OK, 17 rows affected (0.01 sec) Records: 17  Duplicates: 0  Warnings: 0

(mysql5.7)root@localhost [test]> select * from information_schema.tables where CREATE_OPTIONS like '%ENCRYPTION="Y"%'\G;

Empty set (0.05 sec)

3.小结

安装插件很简单,有必要测试一下加密表空间对性能的影响。测试也很简单,用sysbench,tpcc先创建表,再修改为加密表空间。还有key密钥不要误删除了,不然就呵呵哒。你数据只能用备份来恢复了

MySQL5.7表空间加密的更多相关文章

  1. MySQL InnoDB表空间加密

    从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...

  2. mysql表空间加密 keyring encryption

    从5.7.11开始,mysql开始支持物理表空间的加密,它使用两层加密架构.包括:master key 和 tablespace key master key用于加密tablespace key,加密 ...

  3. 10. InnoDB表空间加密

    10. InnoDB表空间加密 InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密. 详细信息见官方文档

  4. KingbaseES 表空间加密-透明加密

    透明存储加密是指数据在写到磁盘上时对其进行加密,当授权用户重新读取数据时再对其进行解密.加密解密过程对用户都是透明的,无需对应用程序进行修改,授权用户甚至不会注意到数据已经在存储介质上加密.当前的透明 ...

  5. OCM_第三天课程:Section1 —》表空间的操作和管理、服务配置

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  6. Oracle加密表空间进行数据加密的示例

    接上篇:http://www.cnblogs.com/myrunning/p/4292049.html 1查看数据库版本 2查看当前数据库表空间 从这里看到我们此时数据库里没有加密表空间. 3创建加密 ...

  7. mysql-5.7 收缩系统表空间详解

    innodb 系统表空间是一个逻辑上的概念,它的物理表现就是innodb系统表空间文件:在讲扩展系统表空间时我们说到 可以用增加文件,增加autoextend标记 这两种方式来解决:但是问题到了收缩表 ...

  8. MySQL5.7 import表结构报错超出表空间界限

    事后测试了一下,一下方法就是垃圾,看看可以,别跟着学!!! 数据库重启后,问题依然暴露出来了,参数什么的都是扯,擦 记录一个困扰我好几天的问题.先贴上报错: space name jxtms/Cost ...

  9. MySQL5.7开启独立表空间参数innodb_file_per_table【原创】

    今天在线上某个系统发现MySQL数据库使用的是共享表空间,想修改为独立表空间,操作如下: #因为是主从结构,在从库修改测试,先关闭binlog SET SQL_LOG_BIN=; show varia ...

随机推荐

  1. OGG配置

    准备安装和运行用户(操作系统用户) 建议使用oracle用户 也可以使用新建用户:但是需要做配置 必须缴入到oinstall 组 必须使用和oracle相同的profile 操作系统必须为该用户开放一 ...

  2. Java高效读取大文件

    1.概述 本教程将演示如何用Java高效地读取大文件.这篇文章是Baeldung (http://www.baeldung.com/) 上“Java——回归基础”系列教程的一部分. 2.在内存中读取 ...

  3. ASP.NET Web - 服务器控件

    控件 HTML 说明 Label <span> 返回一个包含文本的span元素 Literal static text 返回简单的静态文本.使用Literal控件,可以根据客户应用程序转换 ...

  4. Week2 Team Homework: 必应输入法的软件分析和用户需求调查

    一.选题和目标人群的确定 4月8日,微软宣布推出首款整合搜索的中文云输入法“必应Bing输入法”,其前身是“英库拼音输入法”.微软宣称,该输入法界面干净,无广告.无插件,即使是在性能相对不高的电脑上, ...

  5. 【经验】Angularjs 中使用 layDate 日期控件

    layDate 控件地址:http://laydate.layui.com/ 前情:原来系统中使用的日期控件是UI bootstrap(地址:https://angular-ui.github.io/ ...

  6. Regex.Match 方法

    Regex.Match 方法 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回. 重载列表      (1) 在指定的输入字符串中搜索 Regex 构造函数中指定的正则 ...

  7. Careercup - Facebook面试题 - 5188884744896512

    2014-05-02 07:18 题目链接 原题: boolean isBST(const Node* node) { // return true iff the tree with root 'n ...

  8. 如何在cocos2dx lua的回调函数里面用self

    回调里的self是另一个不同的东西了,通常是触发回调的对象,或_G或nil ,视情况而定 我的 print(self) 输出 userdata function MyClass:sayFromCall ...

  9. javascript_22_for_二维数组

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. 清橙A1363. 水位 - 清华大学2012年信息学优秀高中学子夏令营

    问题描述 有一个正方形的地区,该地区特点鲜明:如果把它等分为N×N个小正方形格子的话,在每个格子内的任意地点的地表高度是相同的,并且是一个0到M之间的整数.正方形地区的外部被无限高的边界包围. 该地区 ...