MySQL 5.6提供了高級加密標準(AES)密鑰管理,使得加密數據變得更加容易、更加安全,同時也更加方便管理。MySQL 5.6密鑰的工作原理是使用一個主密鑰和一個或多個加密的數據密鑰。
# 創建加密密鑰表 CREATE TABLE mysql.keys_priv ( Host char(60) COLLATE utf8_bin NOT NULL DEFAULT '', User char(16) COLLATE utf8_bin NOT NULL DEFAULT '', Key_name char(64) COLLATE utf8_bin NOT NULL DEFAULT '', Keyfile_name char(256) COLLATE utf8_bin NOT NULL DEFAULT '', ... ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Keyring keys'; # 創建加密密鑰 CREATE KEYRING FILE keyring ENCRYPTION_AES = 1 KEY_BLOCK_SIZE = 16; ALTER INSTANCE ROTATE INNODB MASTER KEY; # 加載密鑰 ALTER INSTANCE ADD KEYRING PLUGIN keyring_file.so; # 創建加密密鑰別名 CREATE OR REPLACE VIEW mysql.rsyslog(c) AS SELECT 'syslog.localhost'; GRANT USAGE ON *.* TO 'root'@'localhost' REQUIRE NONE WITH MAX_USER_CONNECTIONS 0; # 使用加密密鑰別名 SET GLOBAL slow_query_log.keyring='mysql.rsyslog'; # 查看密鑰信息 SHOW VARIABLES LIKE 'keyring_%';
MySQL 5.6中的密鑰管理功能也提供了優雅的解決方案,例如使用MySQL實例級別的加密密鑰管理、使用密鑰別名來簡化密鑰的管理、使用MySQL內置的加密函數加密已加密數據的額外安全增強等,滿足了我們對數據加密更深層次的需求。