zoukankan      html  css  js  c++  java
  • MySQL5.7表空间加密

    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密钥不要误删除了,不然就呵呵哒。你数据只能用备份来恢复了

  • 相关阅读:
    大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端
    大数据学习day29-----spark09-------1. 练习: 统计店铺按月份的销售额和累计到该月的总销售额(SQL, DSL,RDD) 2. 分组topN的实现(row_number(), rank(), dense_rank()方法的区别)3. spark自定义函数-UDF
    大数据学习day28-----hive03------1. null值处理,子串,拼接,类型转换 2.行转列,列转行 3. 窗口函数(over,lead,lag等函数) 4.rank(行号函数)5. json解析函数 6.jdbc连接hive,企业级调优
    大数据学习----day27----hive02------1. 分桶表以及分桶抽样查询 2. 导出数据 3.Hive数据类型 4 逐行运算查询基本语法(group by用法,原理补充) 5.case when(练习题,多表关联)6 排序
    大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式
    大数据学习day25------spark08-----1. 读取数据库的形式创建DataFrame 2. Parquet格式的数据源 3. Orc格式的数据源 4.spark_sql整合hive 5.在IDEA中编写spark程序(用来操作hive) 6. SQL风格和DSL风格以及RDD的形式计算连续登陆三天的用户
    大数据学习day24-------spark07-----1. sortBy是Transformation算子,为什么会触发Action 2. SparkSQL 3. DataFrame的创建 4. DSL风格API语法 5 两种风格(SQL、DSL)计算workcount案例
    大数据学习day23-----spark06--------1. Spark执行流程(知识补充:RDD的依赖关系)2. Repartition和coalesce算子的区别 3.触发多次actions时,速度不一样 4. RDD的深入理解(错误例子,RDD数据是如何获取的)5 购物的相关计算
    大数据学习day22------spark05------1. 学科最受欢迎老师解法补充 2. 自定义排序 3. spark任务执行过程 4. SparkTask的分类 5. Task的序列化 6. Task的多线程问题
    [POJ] 1325 Machine Schedule(最小点覆盖)
  • 原文地址:https://www.cnblogs.com/LMySQL/p/5603911.html
Copyright © 2011-2022 走看看