我正在为MariaDB实例配置静态数据加密。我想自动加密所有表空间。我已经在选项文件中配置了MariaDB加密选项,并且所有新表都已加密。但是,现有表未加密。我可以使用以下命令手动对其进行加密:
ALTER TABLE users ENCRYPTED=YES;
这是我添加到我的选项文件中的内容:
plugin_load_add=file_key_management
file_key_management_filename=/mnt/mariadb_databases/mysql/encryption/keyfile.enc
file_key_management_filekey=FILE:/mnt/mariadb_databases/mysql/encryption/.keyfile.key
file_key_management_encryption_algorithm=aes_ctr
innodb_default_encryption_key_id=3
innodb_encrypt_tables=FORCE
innodb_encrypt_log=ON
innodb_encryption_threads=1
encrypt_tmp_files=ON
innodb_encryption_rotate_key_age=1
我使用此命令来检查对哪些表进行了加密:
SELECT * FROM information_schema.INNODB_TABLESPACES_ENCRYPTION;
OS:CentOS 7
MariaDB版本:10.4.6(最初通过每个后续版本从5.5升级)
选项文件:/etc/my.cnf
如何使所有现有表自动加密?我以为innodb_encrypt_tables = FORCE选项可以做到这一点,但是它不能按预期工作,并且我不想为所有现有表运行ALTER TABLE语句。
答案 0 :(得分:0)
innodb_encrypted_tables=FORCE
意味着您无法创建未加密的新表,因此CREATE TABLE ... ENCRYPTED=NO
将失败。这并不意味着所有表都会自动转换为加密表(这可能需要很长时间)。
因此,如果要转换所有表,则必须手动执行(或通过编写一些小脚本)。