Keyring是一個在MySQL中管理和保護加密信息的插件。它可用于存儲敏感數據,如密碼和證書,并提供在MySQL服務器和客戶端之間安全傳輸這些數據的機制。
Keyring插件是可選的,并且可以使用以下命令安裝:
INSTALL PLUGIN keyring_file SONAME 'keyring_file.so'; INSTALL PLUGIN keyring_udf SONAME 'keyring_udf.so'; INSTALL PLUGIN keyring_vault SONAME 'keyring_vault.so';
keyring_file插件以文件的形式存儲所有數據,keyring_udf插件使用用戶定義函數(UDF)在外部應用程序中存儲數據,而keyring_vault插件使用Hashicorp Vault來存儲數據。
使用Keyring插件存儲MySQL密碼時,可以先在Keyring中存儲明文密碼,然后在MySQL中使用SHA2()函數對其進行散列處理。密碼散列值將存儲在mysql.user表中,而明文密碼將存儲在Keyring中。
mysql>SELECT SHA2('mypassword',256); +------------------------------------------------------------------+ | SHA2('mypassword',256) | +------------------------------------------------------------------+ | 8d1b5e5fcf618e47cd238a59726551f9c66a67ef78a08c3d3fce18585c940778 | +------------------------------------------------------------------+ mysql>CREATE USER 'myuser'@'%' IDENTIFIED WITH 'mysql_native_password' BY '8d1b5e5fcf618e47cd238a59726551f9c66a67ef78a08c3d3fce18585c940778';
在MySQL服務器和客戶端之間傳輸密碼時,Keyring插件提供加密傳輸的功能。MySQL服務器將明文密碼發(fā)送到Keyring插件,插件使用AES加密算法加密它,并將密文發(fā)送回MySQL服務器。MySQL服務器將與客戶端的通信使用相同的過程重復,以便在和客戶端之間傳輸數據時加密和解密數據,保護數據的安全性。
Keyring插件還提供了其他安全功能,例如對MySQL客戶端的插件API進行授權,以防止未經授權的插件訪問Keyring存儲的數據。