MySQL数据克隆的用户权限设计(1),毕业工作5年被裁

在这里插入图片描述

1.产品定位:

数据克隆是高效,安全的从通过从线上指定数据库/表克隆数据,从而快速构建虚拟环境,提供更高效的数据交付服务。从效率上可以支持业务自助提取数据,分钟级快速构建环境,可以通过workbench等工具访问数据,整个过程基本不需要DBA手工操作介入。从安全上,支持数据操作日志审计,提供库/表访问过滤,随机虚拟环境和临时密码交付,此外会对虚拟环境使用时长进行限制,尽可能保证数据的使用安全。

2.适用场景:

目前数据克隆功能支持如下的场景:

1)线上配置数据的快速查看

2)提取线上表结构

3)日志数据查询,线上大表

4)线上SQL异常,快速构建虚拟环境进行SQL优化,压测等

5)指定大表的变更和数据操作影响评估

6)数据补丁合并,基于业务逻辑的数据操作和数据补丁整理

整个实现的过程有很多考虑的细节,不过还是在设计和实现中由同事和我一并解决了。

到了交付的时机了,我们想到还有一个关键的地方需要补充,那就是数据库和用户的权限关联,也就意味着每个人可以看到和使用的数据库应该是不大一样的,因为做一些权限隔离,所以接下来我会说说数据克隆方向的用户权限设计。

数据克隆的用户权限设计是面向业务使用的基础功能,目前对于用户权限的设计可以基于数据库级别。

权限的实现可以分两个阶段来完成:

1)数据初始化阶段,可以使用用户组批量初始化的方式,部分数据可以从工单历史中获取

2)定制化配置阶段,根据业务需求变更和组织架构调整进行数据库和用户映射关系的微调

在这里插入图片描述

其中,

实例信息和库信息可以基于数据库基线表 mysql_db_baseline

用户组信息和用户信息可以基于用户表 user_info

数据库-用户关系表需要新建,表名为:mysql_db_user_rel(id,ip_addr,db_port,db_name,user_id)

需要实现四个子功能:

1)数据库-用户关系映射,实现单一数据库和单一用户的关系,在关系表中为一条记录

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

image

最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)**

[外链图片转存中…(img-ENHl3qv6-1631066791442)]

搜集费时费力,能看到此处的都是真爱!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MySQL中设置用户复制权限需要以下步骤: 1. 创建一个具有复制权限的用户 ``` CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; ``` 2. 为该用户授予复制权限 ``` GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; ``` 3. 刷新权限 ``` FLUSH PRIVILEGES; ``` 4. 在主服务器上创建一个用于复制的用户并授予复制权限 ``` CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` 5. 在从服务器上创建一个用于复制的用户并授予复制权限 ``` CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; ``` 6. 在从服务器上设置复制参数 ``` CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_position; ``` 其中,`master_host_name`为主服务器的名称或IP地址,`repl_user`为主服务器上的复制用户,`password`为复制用户的密码,`master_log_file_name`为主服务器上的二进制日志文件名,`master_log_position`为主服务器上的二进制日志位置。 7. 启动从服务器的复制进程 ``` START SLAVE; ``` ### 回答2: 在MySQL中,我们可以使用GRANT语句为用户设置复制权限。 首先,我们需要确保用户有REPLICATION SLAVE权限。使用以下命令可以为用户授予复制权限: ``` GRANT REPLICATION SLAVE ON *.* TO '用户名'@'主机'; ``` 这个命令将用户的复制权限授予全局所有库和表。如果你只想授予特定库或表的复制权限,需要将`*.*`替换为相应的库名和表名。 如果用户只需要连接到其他MySQL实例作为主从复制的从库,可以使用以下命令授予复制客户端权限: ``` GRANT REPLICATION CLIENT ON *.* TO '用户名'@'主机'; ``` 这个命令将用户的复制客户端权限授予全局所有库和表。同样,如果你只想授予特定库或表的复制客户端权限,需要将`*.*`替换为相应的库名和表名。 在授予权限后,记住要刷新权限使其生效: ``` FLUSH PRIVILEGES; ``` 这样用户就已经被授予了相应的复制权限。 ### 回答3: MySQL是一种常用的关系型数据库管理系统,用户复制权限是指授权用户在主从复制环境中执行复制操作的权限。下面是设置MySQL用户复制权限的步骤: 1. 首先,连接到MySQL数据库服务器,可以使用mysql命令行工具或者其他MySQL客户端工具。 2. 在连接成功后,使用CREATE USER语句创建一个新用户,指定用户名和密码。例如,创建一个名为replication_user的用户,并设置密码为replication_password。命令如下: CREATE USER 'replication_user'@'%' IDENTIFIED BY 'replication_password'; 3. 授予复制权限给这个新用户。复制权限包括REPLICATION SLAVE和REPLICATION CLIENT权限。命令如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replication_user'@'%'; 4. 通过FLUSH PRIVILEGES命令刷新权限,使新的权限设置生效。命令如下: FLUSH PRIVILEGES; 设置完成后,'replication_user'用户将具有复制权限,并可以在主从复制环境中执行复制操作。需要注意的是,%表示允许从任何客户端连接到MySQL服务器,如果你只想允许特定的IP地址连接,则可以将%替换为相应的IP地址。 这样,就可以通过以上步骤设置MySQL用户的复制权限。当用户需要进行主从复制操作时,可以使用该用户登录到数据库,并执行相应的复制命令。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值