1. 程式人生 > 其它 >Windows 下的MySQL安裝keyring_file外掛

Windows 下的MySQL安裝keyring_file外掛

技術標籤:資料庫mysql資料庫

文章目錄

前言

一、配置my.ini

二、安裝keyring外掛

三、檢視外掛狀態

四、加解密資料表

五、解除安裝keyring外掛


前言

從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>