千家信息网

MySQL 整表加密解决方案 keyring_file详解

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,说明MySql社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表。这种是加密方式其实是基于文件加密的,一旦mysqld读取key启动后,将会解密整张表的
千家信息网最后更新 2026年11月03日MySQL 整表加密解决方案 keyring_file详解

说明

MySql社区版从5.7.11开始支持基于表的数据加密方案,模块名为keyring_file,支持加密整张表。这种是加密方式其实是基于文件加密的,一旦mysqld读取key启动后,将会解密整张表的数据,在mysql服务内,读取的数据都是解密后的,也就是说对客户端而言是无感知的。而这个key是本地存放的,mysql服务拥有读写这个key的权限。

总体看这种方案不太安全,原因是数据库文件是加密的,但只要能有mysql服务的账户,那么访问数据都是解密后的,加密不攻自破。而且解密key也是本地存放的,入侵者完全可以一并带走。这种方案只能保证入侵者只拖走了数据库文件后无法读取内容。

企业版MySQL额外的三种模块

如果是企业版的mysql,那么还有另外三种加密方案。

1.keyring_encrypted_file

和我之前说的社区版差不多的,只是多了一个key。这个key用于加密解密数据库用的key。安全性方面都差不多。

2.keyring_okv

相比本地存放key,本模块使用KMIP存取key,相对更加安全。

3.keyring_aws

整合aws的密匙管理服务来管理加解密的key。进一步提高key的管理安全性。

四个加密模块支持的加密类型

模块名可用加密算法密钥长度限制
keyring_encrypted_fileAES
DSA
RSA
无限制
无限制
无限制
keyring_fileAES
DSA
RSA
无限制
无限制
无限制
keyring_okvAES16, 24, 32
keyring_awsAES16, 24, 32

总结一下,四种方案都是文件加密,内存解密方案,区别在于加解密的key存放方案。推荐使用keyring_okv和keyring_aws,并确保mysql账户的安全性和严格区分账户权限。

另外2种安全性不大。

实施步骤

OK,现在简单讲一下最简单的keyring_file部署方案,提前说明下windows貌似无法使用这种方案,因为不知道为什么加密用的key总是无法生成。

1.使用最新版的mysql 5.7.21

使用yum apt 之类的工具安装最新版的mysql 或者 下载源码自行编译安装

sudo apt install mysql-5.7

2.启用加密模块

INSTALL PLUGIN keyring_file soname 'keyring_file.so';

mysql> INSTALL PLUGIN keyring_file soname 'keyring_file.so';Query OK, 0 rows affected (0.10 sec)

3.设置加密key存放路径

set global keyring_file_data='/root/mysql-keyring/keyring';

mysql> set global keyring_file_data='/var/lib/mysql-keyring/keyring';Query OK, 0 rows affected (0.00 sec)

4.永久启用设置

上诉两个步骤都是临时的,重启服务都会失效,我们把配置写到配置文件里,确保重启服务后也能生效

[mysqld]early-plugin-load=keyring_file.sokeyring_file_data=/root/mysql-keyring/keyring

5.查看key的存放路径

show global variables like '%keyring_file_data%';

mysql> show global variables like '%keyring_file_data%';+-------------------+--------------------------------+| Variable_name   | Value             |+-------------------+--------------------------------+| keyring_file_data | /var/lib/mysql-keyring/keyring |+-------------------+--------------------------------+1 row in set (0.00 sec)

6.查看启用的模块

查看下keyring_file模块是否已经被载入。
show plugins;

mysql> show plugins;+----------------------------+----------+--------------------+-----------------+---------+| Name            | Status  | Type        | Library     | License |+----------------------------+----------+--------------------+-----------------+---------+| binlog           | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || mysql_native_password   | ACTIVE  | AUTHENTICATION   | NULL      | GPL   || sha256_password      | ACTIVE  | AUTHENTICATION   | NULL      | GPL   || PERFORMANCE_SCHEMA     | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || CSV            | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || MRG_MYISAM         | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || MyISAM           | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || InnoDB           | ACTIVE  | STORAGE ENGINE   | NULL      | GPL   || INNODB_TRX         | ACTIVE  | INFORMATION SCHEMA | NULL      | GPL   || INNODB_LOCKS        | ACTIVE  | INFORMATION SCHEMA | NULL      | GPL   || INNODB_LOCK_WAITS     | ACTIVE  | INFORMATION SCHEMA | NULL      | GPL   || INNODB_CMP         | ACTIVE  | INFORMATION SCHEMA | NULL      | GPL   || INNODB_CMP_RESET      | ACTIVE  | INFORMATION SCHEMA | NULL      | GPL   |。。。。。。(省略N条)| keyring_file        | ACTIVE  | KEYRING      | keyring_file.so | GPL   |+----------------------------+----------+--------------------+-----------------+---------+45 rows in set (0.00 sec)

7.加密现有的表

alter table table encryption='Y';

mysql> create table cc (id int);Query OK, 0 rows affected (0.01 sec)mysql> alter table cc encryption='Y';Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0

8.取消加密

alter table table encryption='N';

mysql> alter table cc encryption='N';Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0

官方文档:

https://dev.mysql.com/doc/refman/5.7/en/keyring-installation.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

加密 方案 模块 数据 安全 无限制 服务 文件 安全性 支持 数据库 账户 管理 差不多 企业 入侵者 内容 最新版 权限 步骤 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 互联网加科技 菲比寻常互联网科技 融贸通互联网科技 互联网科技类展会 互联网对科技的发展 昭通互联网科技选哪家 湖南一路畅行互联网科技 搜狐科技互联网 想开互联网科技公司怎么样 工业互联网等科技实现智能化赋能 徐州市互联网科技有限公司 中科明德北京互联网科技 中天科技中国工业互联网 宁波跨境商互联网科技有限公司 上海同邻互联网科技有限公司规模 互联网时代科技型公司的机会 江苏互联网智能科技产品出厂价 互联网科技平台产品运营 米泉互联网科技专业怎么样 北京互联网科技公司 九亚互联网科技 天扬科技互联网广告 互联网科技有限公司 翻译 智腾互联网科技有限公司 互联网科技融合创新 互联网风格科技公司名称 上海同邻互联网科技有限公司规模 安徽九吞吴互联网科技有限公司 银川新华互联网科技学校招聘
0