如何在CentOS中加密现有的mariadb表?

时间:2019-06-26 02:39:05

标签: mysql linux encryption centos mariadb

我正在为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语句。

1 个答案:

答案 0 :(得分:0)

innodb_encrypted_tables=FORCE意味着您无法创建未加密的新表,因此CREATE TABLE ... ENCRYPTED=NO将失败。这并不意味着所有表都会自动转换为加密表(这可能需要很长时间)。

因此,如果要转换所有表,则必须手动执行(或通过编写一些小脚本)。