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

  • 相关阅读:
    linux 下查看文件修改时间
    ubuntu 把软件源修改为国内源和更新
    新概念 Lesson 10 Tired and thirsty What's the matter? Are you all right? That's all right!
    新概念 Lesson 9 How do you do? 你好! our,your,their复数形式的形容词性物主代词
    English trip EM4 LP1 A GETTing To Konw You Teacher:Olivia
    [转] CVE-2019-1367 脚本引擎内存损坏漏洞
    English trip EM3 LP 1B Have a good weekend Teacher:Ryan
    I4-6 Surprise Teacher:Lamb Talk about Holidays and Festives People do what
    English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
    English trip EM3 LP4A ROOMS Teacher:Lamb
  • 原文地址:https://www.cnblogs.com/LMySQL/p/5603911.html
Copyright © 2011-2022 走看看