MYSQL数据加密

2024年 1月 12日 60.5k 0

简介

mysql加密通常分两种. 数据库层面加密 和 业务层面加密. 通常建议业务层面实现加密

数据库层加密

数据库层面加密 又分为使用函数加密指定数据 和 使用加密插件加密整个数据

加密函数

使用加密函数对写入的数据进行加密, 使用解密对读取的数据进行解密操作
比如可以使用AES_ENCRYPT对数据进行加密, AES_DECRYPT对数据进行解密
优点: 只加密指定数据, 效率高
缺点: 使用麻烦

使用加密插件

参考官网: https://dev.mysql.com/doc/refman/5.7/en/keyring.html
安装插件: (参考:https://dev.mysql.com/doc/refman/5.7/en/keyring-plugin-installation.html)

编辑mysql配置文件my.cnf添加
early-plugin-load=keyring_file.so
keyring_file_data=/usr/local/mysql/keyring/keyring

然后重启mysqld (注意/usr/local/mysql/keyring目录权限)

查看插件

创建带有加密属性的表
create table t20231211_2(id int primary key, name varchar(20), age int) ENCRYPTION=‘Y’;

设置已有表使用加密
alter table t20231211_2 ENCRYPTION=‘Y’;

取消已有表的加密
alter table t20231211_2 ENCRYPTION=‘N’;

优点: 操作简单
缺点: 密钥丢了数据就无法恢复. 备份时需要注意

应用层加密

应用层加密分为 使用现有库加密数据 和自定义加密规则 加密数据

不同的语言有不同的加密库, 也有丰富的第三方库实现加密. 比如Python的cryptography
例子

优点: 使用简单
缺点: 现有库 可能存在漏洞

自定义加密规则

现有加密库可能无法满足业务需求. 此时就可以自定义加密规则了. 比如: https://cloud.tencent.com/developer/article/2256534 相同字符串每次加密结果不同, 但均能正确解密
例子:

优点: 自定义规则几乎很难被破解.
缺点: 加密规则设计成本高.

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论