Windows 下的MySQL安裝keyring_file外掛
阿新 • • 發佈:2020-12-10
前言
從5.7.11開始,mysql開始支援物理表空間的加密,它使用兩層加密架構。
包括:主金鑰(master key) 和 表空間加密金鑰(tablespace key)
主金鑰用於加密加密金鑰,加密後的加密金鑰儲存在表空間檔案的header中。加密金鑰用於加密資料
當用戶想訪問加密的表時,innoDB會先用 主金鑰 對之前儲存在表空間header中被加密的加密金鑰進行解密,得到明文的加密金鑰。
再用 加密金鑰 解密資料資訊。加密金鑰是不會被改變的(除非進行alter table testt encrytion=NO/YES)。
而 主金鑰 可以通過以下命令隨時改變
檢視變更前keyring檔案
執行主金鑰變更命令
mysql> ALTER INSTANCE ROTATE INNODB MASTER KEY;
Query OK, 0 rows affected (0.01 sec)
mysql>
再次檢視變更後keyring檔案
一、配置my.ini
如沒有該檔案,可在建立一個在MySQL安裝目錄或C:\下,檔案新增如下內容,目錄以實際為準,然後重啟MySQL。
[mysqld] 。。。其他配置。。 early-plugin-load=keyring_file.dll keyring_file_data='D:\mysql-8.0.22\mysql-8.0.22-winx64\keyring' # 其中keyring檔案MySQL會自動建立,無需手動建立
二、安裝keyring外掛
登入MySQL,然後執行以下語句安裝
mysql> install plugin keyring_file soname 'keyring_file.dll';
Query OK, 0 rows affected (0.01 sec)
三、檢視外掛狀態
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS -> FROM INFORMATION_SCHEMA.PLUGINS -> WHERE PLUGIN_NAME LIKE 'keyring%'; +--------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +--------------+---------------+ | keyring_file | ACTIVE | +--------------+---------------+ 1 row in set (0.00 sec) mysql>
四、加解密資料表
mysql> use testdb;
Database changed
mysql> alter table testt encryption='Y';
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS
-> FROM INFORMATION_SCHEMA.TABLES
-> WHERE CREATE_OPTIONS LIKE '%ENCRYPTION=''Y''%';
+--------------+------------+----------------+
| TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS |
+--------------+------------+----------------+
| testdb | testt | ENCRYPTION='Y' |
+--------------+------------+----------------+
1 row in set (0.01 sec)
mysql>
mysql> alter table testt encryption='N';
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>
五、解除安裝keyring外掛
mysql> UNINSTALL PLUGIN keyring_file;
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
-> FROM INFORMATION_SCHEMA.PLUGINS
-> WHERE PLUGIN_NAME LIKE 'keyring%';
Empty set (0.00 sec)
mysql>