千家信息网

MariaDB中如何使用加密特性

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,MariaDB中如何使用加密特性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.MariaDB的加密特性innodb表
千家信息网最后更新 2026年11月02日MariaDB中如何使用加密特性

MariaDB中如何使用加密特性,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一.MariaDB的加密特性
  • innodb表空间加密

  • innodb日志加密

  • binlog加密

  • aria表加密

  • 临时文件加密

加密特性的一些限制:

  1. 元数据文件(.frm)目前尚未加密;

  2. 目前只有MariaDB server才能解密,mysqlbinlog工具还不支持解析加密后的binlog文件

  3. xtrabackup工具目前无法备份/恢复使用了加密特性的MariaDB实例。

  4. 慢查询日志和错误日志尚未加密,里面可能会包含原始数据。

二.使用MariaDB加密

为了保护加密后的数据,密钥一般存放在和数据文件不同的位置。MariaDB的密钥管理方式可以根据不同的保密需求来开发密钥管理插件,在默认情况下可以使用file_key_management插件,该插件以文件的方式存储密钥。
file_key_management插件:
相关参数:
file_key_management_filename:密钥文件位置, 比如/etc/my.cnf.d/file_key.txt
file_key_management_filekey:密钥文件的解密密码,如果密钥文件有加密的话则必须提供
file_key_management_encryption_algorithm:加密算法, AES_CBC/AES_CTR

密钥文件格式:

# MariaDB encryption file key1;561A4A02DA569D12EE4A4682369574322;561A4A02DA569D12EE4A4682369574443;87A6C96D487659137E316A467BEA646787A6C96D487659137E316A467BEA6467

每行密钥由两部分组成,第一部分是密钥id,紧跟分隔符后面的是十六进制的密钥。
每个表可以单独指定一个密钥id(1-255)。不过innodb系统表空间和日志文件固定使用id为1的密钥来加密,所以密钥文件中一定要有id为1的密钥。如果存在密钥id为2的密钥,则会用来加密临时表和临时文件。

这里还可以对密钥文件本身进行加密来防止密钥文件外泄,例如把明文的file_key.txt文件加密成file_key_enc.txt,密码为file_key_encrypt_key: openssl enc -aes-256-cbc -md sha1 -k file_key_encrypt_key -in file_key.txt -out file_key_enc.txt

innodb加密选项:
innodb-encrypt-tables:on/off/force, 是否加密所有innodb表, force表示强制加密所有innodb表
innodb-encrypt-log:on/off, 是否加密innodb日志文件
innodb-encryption-rotate-key-age:秒数,如果获取到了新密钥多久更新一次页面加密
innodb-encryption-rotation-iop:IOPS,最多允许用多少IOPS来做页面加密更新
innodb-encryption-threads:线程数,用多少个后台线程来做页面加密更新

binlog加密选项:
encrypt-binlog:on/off,是否加密binlog

其他加密选项:
encrypt_tmp_files:on/off,是否加密临时文件
encrypt_tmp_disk_tables:on/off,是否加密aria临时表
aria_encrypt_tables:on/off,是否加密aria表(只对ROW_FORMAT=PAGE)

加密测试:

在/etc/my.cnf.d/server.conf中添加:plugin-load-add=file_key_management.sofile_key_management_encryption_algorithm=aes_cbcfile_key_management_filename = /etc/my.cnf.d/file_key_enc.txtfile_key_management_filekey = file_key_encrypt_keyinnodb-encrypt-tablesinnodb-encrypt-loginnodb-encryption-threads=4encrypt-binlogencrypt_tmp_filesencrypt_tmp_disk_tablesaria_encrypt_tables添加完成后重启MariaDB服务。

创建不加密的表:
create table unencrypt_t(id int, name varchar(32)) ENCRYPTED=NO;

创建加密的表,指定密钥id为3:
create table encrypt_t(id int, name varchar(32)) ENCRYPTED=YES ENCRYPTION_KEY_ID=3;

修改不加密的表为加密:
alter table unencrypt_t ENCRYPTED=YES ENCRYPTION_KEY_ID=3;

修改加密的表为不加密:
alter table unencrypt_t ENCRYPTED=NO;

插入数据:

insert into unencrypt_t(id, name) values(1, 'one');insert into encrypt_t(id, name) values(1, 'one');

已加密的数据文件对比未加密的数据文件:

binlog加密:

加密开启后的主备同步:
开启加密后,主机和备机之间的binlog传输是不加密的,由备机在写relaylog/binlog/数据文件时进行加密。所以主备之间的密钥可以不同,但id信息必须一致,否则建表语句在备机上无法执行成功,将会导致slave SQL线程中止。

加密和压缩:
数据加密和数据压缩可以同时使用,MariaDB先做数据压缩再做数据加密,可以节约很大的存储空间。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

加密 密钥 文件 数据 日志 特性 插件 不同 空间 线程 页面 更新 之间 位置 密码 尚未 工具 方式 需求 存储 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 涨乐互联网科技 盈实互联网科技 深圳互联网络科技有限公司 互联网科技股票 中国最先进互联网科技公司 华中科技有哪些互联网大佬 互联网科技教育视频 贵州叶脉互联网科技有限公司所属行业 青岛科技大学互联网大赛研究生 湖南一路畅行互联网科技 和信科技工业互联网 知域互联网科技有限公司大骗子 沐思想互联网科技有限公司 互联网金融科技元年 雨阳互联网卡科技有限公司 黑云互联网科技有限公司 昆明中奇联合互联网科技 互联网高科技行业有哪些企业 长沙渺峰互联网科技有限公司 互联网科技大佬云集 什么是科技互联网 苏州找大状互联网科技有限公司 涨乐互联网科技 易互联网科技有限公司 苏州互联网科技贷款公司 哈尔滨屹滨互联网科技有限公司 互联网风格科技公司名称 湖北辰鑫科技互联网 互联网科技创新创业项目 杭州科技互联网公司有哪些
0