概述
MariaDB在10.1.3以后支持本地数据加密,如果密钥存储在另外一个系统上,那么别人几乎是不可能盗取数据库的本地数据。但是使用加密会下降5%左右的性能。
引擎支持
目前支持XtraDB、InnoDB两种存储引擎。支持表级加密以及表空间加密两种模式。
配置密钥
[root@localhost my.cnf.d]# openssl enc –aes-256-cbc –k 123456 –P –md sha1
[root@localhost my.cnf.d]# openssl enc -aes-256-cbc -md sha1 -k 123456 -in keys.txt -out keys.enc
4. 配置文件
修改my.cnf文件
plugin_dir=/usr/local/mysql/lib/plugin
plugin-load-add=file_key_management.so
file-key-management
file_key_management_encryption_algorithm=aes_cbc
file_key_management_filename = /etc/my.cnf.d/keys.enc
file_key_management_filekey = 123456
innodb-encrypt-log=ON
innodb-encryption-threads=4
innodb-encrypt-tables=FORCE
innodb-default-encryption-key-id=1
5. 创建加密表
[root@localhost my.cnf.d]# service mysql start
[root@localhost my.cnf.d]# mysql
MariaDB [(none)]> create database encrypted;
MariaDB [(none)]> use encrypted;
MariaDB [encrypted]> CREATE TABLE test (id INTEGER NOT NULL PRIMARY KEY, col1 VARCHAR(100)) ENGINE=Innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
MariaDB [encrypted]> insert into test values(1,'abc');
6. 验证
MariaDB [encrypted]> SHOW PLUGINS SONAME 'file_key_management.so';
MariaDB [encrypted]> show variables like '%encrypt%';
MariaDB [encrypted]> select * from test;
[root@localhost my.cnf.d]# mysql encrypted
MariaDB [encrypted]> show tables;
删除key.enc
MariaDB [encrypted]> select * from test;
删除了密钥,无法查询到数据
7. 完