数据加密

使用实战

前置工作

  1. 启动 MySQL 服务
  2. 创建 MySQL 数据库(参考 ShardingProxy 数据源配置规则)
  3. 为 ShardingProxy 创建一个拥有创建权限的角色或者用户
  4. 启动 Zookeeper 服务 (为了持久化配置)

启动 ShardingProxy

  1. 添加 modeauthentication 配置参数到 server.yaml (请参考相关 example 案例)
  2. 启动 ShardingProxy (相关介绍)

创建分布式数据库和分片表

  1. 连接到 ShardingProxy
  2. 创建分布式数据库
  1. CREATE DATABASE encrypt_db;
  1. 使用新创建的数据库
  1. USE encrypt_db;
  1. 配置数据源信息
  1. ADD RESOURCE ds_0 (
  2. HOST=127.0.0.1,
  3. PORT=3306,
  4. DB=ds_0,
  5. USER=root,
  6. PASSWORD=root
  7. );
  1. 创建加密表
  1. CREATE TABLE `t_encrypt` (
  2. `order_id` int NOT NULL,
  3. `user_plain` varchar(45) DEFAULT NULL,
  4. `user_cipher` varchar(45) DEFAULT NULL,
  5. PRIMARY KEY (`order_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  1. 创建加密规则
  1. CREATE ENCRYPT RULE t_encrypt (
  2. COLUMNS(
  3. (NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME=AES,PROPERTIES('aes-key-value'='123456abc'))),
  4. (NAME=order_id, CIPHER =order_cipher,TYPE(NAME=MD5))
  5. ));
  1. 修改加密规则
  1. CREATE ENCRYPT RULE t_encrypt (
  2. COLUMNS(
  3. (NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME=AES,PROPERTIES('aes-key-value'='123456abc'))),
  4. ));
  1. 删除加密规则
  1. DROP ENCRYPT RULE t_encrypt;
  1. 删除数据源
  1. DROP RESOURCE ds_0;
  1. 删除分布式数据库
  1. DROP DATABASE encrypt_db;

注意事项

  1. 当前, DROP DATABASE 只会移除逻辑的分布式数据库,不会删除用户真实的数据库。
  2. DROP TABLE 会将逻辑分片表和数据库中真实的表全部删除。
  3. CREATE DATABASE 只会创建逻辑的分布式数据库,所以需要用户提前创建好真实的数据库。