MySQL表空間加密設置相對簡單。 你必須使用MySQL 5.7,innodb_file_per_table
MySQL文檔涵蓋了您需要設置的所有內容:
但是如果我剛剛分享了一個鏈接,我的博文將很短。 所以....
升級後,在MySQL 5.7中,您需要有一個有效的密鑰文件位置。 我有一個MySQL datadir作為/ var / lib / mysql / data這允許默認的位置為人們找到它,如果需要,但也允許一個簡單的安裝位置為更多的磁盤,如果需要,以及。 這也避免了對selinux等進行其他編輯,因為它已經允許/ var / lib / mysql。
觸摸/ var / lib / mysql / keyring
chmod 750 / var / lib / mysql / keyring *
chown mysql:mysql / var / lib / mysql / keyring
編輯mysql .cnf文件:
ls /usr/lib64/mysql/plugin/keyring_file.so
/usr/lib64/mysql/plugin/keyring_file.so
的[mysqld]
#鍵盤插件安裝
早期插件負荷= keyring_file.so
keyring_file_data =的/ var / lib中/ MySQL的/鑰匙圈
MySQL啟動後檢查您的插件:
mysql> SELECT PLUGIN_NAME,PLUGIN_STATUS
- > FROM INFORMATION_SCHEMA.PLUGINS
- > WHERE PLUGIN_NAME LIKE'keyring%';
+ -------------- + --------------- +
| PLUGIN_NAME | PLUGIN_STATUS |
+ -------------- + --------------- +
| keyring_file | ACTIVE |
| keyring_udf | ACTIVE |
+ -------------- + --------------- +
INSTALL PLUGIN keyring_udf SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_generate RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_fetch RETURNS STRING SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_length_fetch RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_type_fetch RETURNS STRING SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_store RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_remove RETURNS INTEGER SONAME'keyring_udf.so';
mysql>使用測試;
mysql> SELECT keyring_key_generate('MyKey1','AES',32);
mysql> CREATE TABLE`enc_test`(
`enc_test_id` varchar(255)NOT NULL,
PRIMARY KEY(`enc_test_id`)
)ENGINE = InnoDB;
mysql> alter table test.enc_test encryption ='Y';
mysql> show create table enc_test \ G
*************************** 1.行******************** *******
表:enc_test
創建表:CREATE TABLE`enc_test`(
`enc_test_id` varchar(255)NOT NULL,
PRIMARY KEY(`enc_test_id`)
)ENGINE = InnoDB DEFAULT CHARSET = latin1 ENCRYPTION ='Y'
1排(0.00秒)
MySQL文檔涵蓋了您需要設置的所有內容:
- https://dev.mysql.com/doc/refman/5.7/en/keyring.html
- https://www.percona.com/blog/2016/04/08/mysql-data-at-rest-encryption
- http://mysqlserverteam.com/mysql-enterprise-transparent-data-encryption-tde-provides-at-rest-encryption-for-physical-innodb-tablespace-data-files/
但是如果我剛剛分享了一個鏈接,我的博文將很短。 所以....
升級後,在MySQL 5.7中,您需要有一個有效的密鑰文件位置。 我有一個MySQL datadir作為/ var / lib / mysql / data這允許默認的位置為人們找到它,如果需要,但也允許一個簡單的安裝位置為更多的磁盤,如果需要,以及。 這也避免了對selinux等進行其他編輯,因為它已經允許/ var / lib / mysql。
觸摸/ var / lib / mysql / keyring
chmod 750 / var / lib / mysql / keyring *
chown mysql:mysql / var / lib / mysql / keyring
編輯mysql .cnf文件:
ls /usr/lib64/mysql/plugin/keyring_file.so
/usr/lib64/mysql/plugin/keyring_file.so
的[mysqld]
#鍵盤插件安裝
早期插件負荷= keyring_file.so
keyring_file_data =的/ var / lib中/ MySQL的/鑰匙圈
MySQL啟動後檢查您的插件:
mysql> SELECT PLUGIN_NAME,PLUGIN_STATUS
- > FROM INFORMATION_SCHEMA.PLUGINS
- > WHERE PLUGIN_NAME LIKE'keyring%';
+ -------------- + --------------- +
| PLUGIN_NAME | PLUGIN_STATUS |
+ -------------- + --------------- +
| keyring_file | ACTIVE |
| keyring_udf | ACTIVE |
+ -------------- + --------------- +
INSTALL PLUGIN keyring_udf SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_generate RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_fetch RETURNS STRING SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_length_fetch RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_type_fetch RETURNS STRING SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_store RETURNS INTEGER SONAME'keyring_udf.so';
CREATE FUNCTION keyring_key_remove RETURNS INTEGER SONAME'keyring_udf.so';
mysql>使用測試;
mysql> SELECT keyring_key_generate('MyKey1','AES',32);
mysql> CREATE TABLE`enc_test`(
`enc_test_id` varchar(255)NOT NULL,
PRIMARY KEY(`enc_test_id`)
)ENGINE = InnoDB;
mysql> alter table test.enc_test encryption ='Y';
mysql> show create table enc_test \ G
*************************** 1.行******************** *******
表:enc_test
創建表:CREATE TABLE`enc_test`(
`enc_test_id` varchar(255)NOT NULL,
PRIMARY KEY(`enc_test_id`)
)ENGINE = InnoDB DEFAULT CHARSET = latin1 ENCRYPTION ='Y'
1排(0.00秒)