0

0

mysql如何启用透明数据加密_mysql TDE静态数据加密

P粉602998670

P粉602998670

发布时间:2026-03-03 10:44:02

|

633人浏览过

|

来源于php中文网

原创

启用 mysql tde 需先加载 keyring_file 插件并配置 keyring_file_data 路径,重启 mysqld 后验证插件状态为 active;alter table encryption='y' 会重建表且不自动重写旧数据;keyring_file 不满足密钥分离等合规要求,推荐使用 keyring_okv 或云 kms 方案。

mysql如何启用透明数据加密_mysql tde静态数据加密

怎么启用 MySQL TDE(以社区版 keyring_file 为例)

MySQL 8.0+ 才支持原生 TDE,低于这个版本直接放弃;启用不是执行一条 SQL 就完事,必须先让密钥环插件跑起来,否则 CREATE ENCRYPTION KEY 会报错 ERROR 3182 (HY000): Cannot create key without keyring plugin enabled

  • my.cnf[mysqld] 段落里加两行:early-plugin-load=keyring_file.sokeyring_file_data=/var/lib/mysql-keyring/keyring
  • /var/lib/mysql-keyring/ 目录必须由 mysql 用户可读写,且不能放在 tmpfs 或 NFS 上(keyring_file 不支持)
  • 修改后必须重启 mysqld,service mysql restart,热加载不生效
  • 启动后检查:SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'keyring_file'; —— 状态必须是 ACTIVE

加密表空间时为什么 ALTER TABLE 没反应?

ALTER TABLE t1 ENCRYPTION='Y' 看似简单,但实际触发的是重建表(ALGORITHM=COPY),不是元数据标记。这意味着:

  • 表越大,锁表时间越长,期间 DML 阻塞
  • 如果磁盘剩余空间不足 1.5 倍表大小,操作会失败并回滚,错误类似 ERROR 1767 (HY000): Failed to initialize tablespace for <code>db.t1
  • 加密只作用于新写入的数据页,已存在的未加密页不会自动重写——也就是说,老数据仍以明文躺在磁盘上,直到被 purge 或 page split 覆盖
  • 日志(redo / binlog)默认不加密,需额外配置 innodb_redo_log_encrypt=ONbinlog_encryption=ON(MySQL 8.0.17+)

keyring_file 安全吗?为什么企业都绕开它

keyring_file 把主密钥以明文形式(AES 加密过,但密钥材料仍在本地文件)存硬盘,本质是“把钥匙挂门把手上”。它满足不了等保三级、GDPR、金融行业密评中关于“密钥分离”和“集中管控”的基本要求。

MyMap AI
MyMap AI

使用AI将想法转化为图表

下载
  • 密钥文件一旦被拖库,攻击者可用 keyring_file.so 插件反解出所有表空间密钥
  • 无法审计谁在什么时候调用了哪个密钥
  • 不支持密钥轮换后自动重加密存量数据(ALTER TABLE ... ENCRYPTION='Y' 是手动逐个执行的)
  • 替代方案:用 keyring_okv(对接 Oracle Key Vault)、keyring_aws(对接 AWS KMS)或云厂商托管方案(如腾讯云 TDSQL 的 KMS 集成),这些才是合规场景下的真实选择

TDE 对性能的影响到底多大?

TDE 加解密发生在 InnoDB buffer pool 和磁盘 I/O 之间,所以影响集中在 CPU 和 I/O 路径:

  • 典型负载下,CPU 使用率上升约 3%~7%,高并发小事务场景更明显
  • 随机读写密集型业务(比如订单详情查询)延迟增加约 5%~10%,顺序扫描影响较小
  • tempdb 会自动继承加密状态(只要有任何用户表启用了 TDE),但系统表空间(ibdata1)不支持加密
  • 最容易被忽略的一点:备份工具如 mysqldump 产出的是明文 SQL,不等于加密——你仍需用 mysqlpump --encrypt 或物理备份 + KMS 加密通道,否则备份文件本身成了最大泄露面

密钥管理永远比加密动作本身更难,而 TDE 的“透明”只对应用层成立,对 DBA 来说,每一步都得亲手校验路径、权限、算法、备份链路——漏掉任意一环,加密就只剩心理安慰。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1089

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

380

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1967

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

379

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1519

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

438

2024.04.29

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

0

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.4万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 842人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号