V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
krisbai
V2EX  ›  Linux

请教: mysql 指定字段列脱敏

  •  
  •   krisbai · 2018-03-09 14:33:01 +08:00 · 6974 次点击
    这是一个创建于 2458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题:想给某个表的指定字段列进行脱敏,比如列名为 mobile,数据为 18018762731,脱敏后,数据为 180****
    求指教,谢谢!
    16 条回复    2018-03-16 13:11:31 +08:00
    cobert
        1
    cobert  
       2018-03-09 14:49:25 +08:00
    视图搞定
    krisbai
        2
    krisbai  
    OP
       2018-03-09 14:50:57 +08:00
    @cobert 因为要定期做,所以只能以脚本方式进行。。。
    abcbuzhiming
        3
    abcbuzhiming  
       2018-03-09 14:53:50 +08:00
    你的脱敏到底是啥意思,是把原始数据都替换掉,再存回数据库吗?
    krisbai
        4
    krisbai  
    OP
       2018-03-09 14:54:39 +08:00
    @abcbuzhiming 直接在数据库内执行语句替换。
    cobert
        5
    cobert  
       2018-03-09 14:56:03 +08:00
    @krisbai 就是对目标表做对应视图,在视图定义时对指定列进行脱敏,你脚本只对视图进行操作。感觉我们俩对 mysql 的使用好像不是一样的。。。。
    cobert
        6
    cobert  
       2018-03-09 14:56:42 +08:00
    #5 对 mysql 的视图使用不是一样的
    liuxu
        7
    liuxu  
       2018-03-09 15:09:44 +08:00
    用触发器?
    krisbai
        8
    krisbai  
    OP
       2018-03-09 15:14:30 +08:00
    @cobert 不好意思,不太用视图。。。
    huahuajun9527
        9
    huahuajun9527  
       2018-03-09 16:54:04 +08:00   ❤️ 1
    ```
    SELECT CONCAT(LEFT(mobile, 3), "****", RIGHT(mobile, 4)) FROM user_info;
    ```
    DeadMan
        10
    DeadMan  
       2018-03-09 18:04:01 +08:00   ❤️ 1
    select concat(left(mobile,3),'****') from table_name;
    yingfengi
        11
    yingfengi  
       2018-03-09 18:15:27 +08:00 via Android
    为何不在存入的时候就对数据进行处理
    wmhack
        12
    wmhack  
       2018-03-10 08:22:03 +08:00 via Android
    自己写一个注解。然后标在 Vo 对应的属性上面。我们公司就是这么做的
    lihongjie0209
        13
    lihongjie0209  
       2018-03-10 22:28:18 +08:00
    说实话, 脱敏属于面向客户端的, 不管是页面还是 restfulapi, 难道不应该在 MVC 中的 View 中做吗??
    服务器端渲染的类似 JSP 可以在渲染时截取替换.
    Restful 接口可以在 Json 转化时统一做.
    你这样直接改数据库我就问一下之后有一个查询手机号的需求你怎么做??
    krisbai
        14
    krisbai  
    OP
       2018-03-12 14:12:18 +08:00
    @DeadMan 请问下执行更新语句后报错,麻烦指导下!
    语句:SELECT * FROM bai.test;
    UPDATE test SET ContactMobile=concat(left(`test`.`ContactMobile`,6),'*****') as ContactMobile ;
    DeadMan
        15
    DeadMan  
       2018-03-12 15:05:38 +08:00   ❤️ 1
    @krisbai 后面的 as ContactMobile 不要
    Miy4mori
        16
    Miy4mori  
       2018-03-16 13:11:31 +08:00
    13 楼的问题我也很好奇
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:41 · PVG 17:41 · LAX 01:41 · JFK 04:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.