2017年10月14日星期六

MySQL InnoDB表空間加密

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