使用触发器自动加密mysql字段

在网上下载了开源CRM系统来管理销售相关的工作成果,但是对于联系人电话,都是公司的机密资产,不能让人可以直接导出数据表,将所有客户联系人方式都拿走。因此决定对手机字段进行加密,看了下CRM源码,很多地方都是使用select *来选择的表数据,如果直接修改代码,修改的地方会很多。就打算使用mysql触发器在数据插入和更新的时候自动加密数据,我们选择的时候使用视图来将数据进行解密。下面介绍一下如何完成这个操作。

1. 在cst_customer表中添加触发器,在插入之前更新手机字段。

BEGIN
    SET new.mobile = to_base64(encode(new.mobile,'salt'));
END

2. 在更新之前更新手机字段。

BEGIN
    if old.mobile!=new.mobile then
        SET new.mobile = to_base64(encode(new.mobile,'salt'));
    end if;
END

3. 创建视图,选择表数据的时候自动解密字段。

create view v_customer
(
customer_id
,name
,customer_no
,create_user_id
,owner_user_id
,create_time
,next_time
,conn_time
,conn_body
,linkman
,source
,grade
,industry
,mobile
,tel
,address
,intro
) as 
select
customer_id
,name
,customer_no
,create_user_id
,owner_user_id
,create_time
,next_time
,conn_time
,conn_body
,linkman
,source
,grade
,industry
,decode(from_base64(mobile),'salt') as mobile
,tel
,address
,intro
from cst_customer

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库设计说明书应该包括以下内容: 1. 数据库概述:介绍数据库的名称、版本、作者、创建时间、更新时间等基本信息,以及数据库的主要功能和应用场景。 2. 数据库结构:详细描述数据库的结构,包括数据库中的表、字段、索引、视图、存储过程和触发器等。 3. 数据库表结构:对于每个表,应该描述表的名称、表的用途、表的字段字段类型、字段长度、字段约束等。此外,还应该说明表之间的关系和连接方式。 4. 数据库索引结构:描述数据库的索引结构,包括索引的类型、索引的字段、索引的顺序等。应该说明索引的创建方式和删除方式,并给出索引的优化建议。 5. 数据库视图结构:描述数据库中的视图结构,包括视图的名称、视图的用途、视图的字段、视图的创建方式等。还应该说明视图的优化建议。 6. 存储过程和触发器:描述存储过程和触发器的名称、用途、参数、返回值等。还应该说明存储过程和触发器的优化建议。 7. 数据库备份和恢复:说明数据库备份和恢复的方式和步骤,包括全量备份、增量备份、恢复数据等。 8. 数据库安全:描述数据库的安全措施,包括用户权限管理、访问控制、数据加密等。 9. 性能优化:说明数据库性能优化的方法和技巧,包括优化查询语句、索引优化、存储过程优化等。 10. 维护和管理:说明数据库的维护和管理方式,包括监控、调优、故障排除等。 总之,MySQL数据库设计说明书应该全面、详细地说明数据库的结构、功能、应用场景、备份恢复、安全性、性能优化、维护管理等方面,以便于数据库管理员和开发人员对数据库进行管理和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值