数据库安全设计头歌

第1关:数据库安全

好消息哈哈:只有一关

任务描述

下面为某部门数据库安全策略
订单数据库中包括名为代理商,客户,产品,订单,订货项目等5个数据表。

  1. 数据库维护人员(1人):可对订单数据库进行任何操作。 账号名称:system_dbowner,允许任何ip通过此用户连接数据库,密码为usercode1
  2. 数据录入人员(2人):可对订单数据库中所有表进行插入、删除、更新操作,不能创建与修改表结构及其它授权等操作。 账号名称:datarecorder1, datarecorder2,允许任何ip通过此用户连接数据库,密码为usercode1
  3. 订单管理人员(2人):能对订单数据库中的订单表和项目表进行插入、删除、更新操作,其它表仅能查询。不能创建与修改表结构及其它授权等操作。 账号名称:order_1,order_2,允许任何ip通过此用户连接数据库,密码为usercode1
  4. 客户管理人员(2人):能对订单数据库中的代理商表和客户表进行插入、删除、更新,其它表仅能查询。不能创建与修改表结构及其它授权等操作。 账号名称:customer_1, customer_2,允许任何ip通过此用户连接数据库,密码为usercode1

要求:
(1)写sql语句实现。合理分配用户权限。
(2)为了能在educoder平台上正确进行测试,所有新增用户密码统一设置为usercode1

具体代码


/*
1、数据库维护人员(1人):可对订单数据库进行任何操作。
账号名称:system_dbowner,密码为usercode1,允许任何ip通过此用户连接数据库
*/
CREATE USER 'system_dbowner'@'%' IDENTIFIED BY 'usercode1';
GRANT ALL PRIVILEGES ON 订单数据库.* TO 'system_dbowner'@'%';
FLUSH PRIVILEGES;

/*
2、数据录入人员(2人):可对订单数据库中所有表进行插入、删除、更新操作,
(注意:为了顺利进行删除更新操作,也需要能有查询权限)
不能创建与修改表结构及其它授权等操作。
账号名称:datarecorder1, datarecorder2,密码为usercode1,允许任何ip通过此用户连接数据库
*/
CREATE USER 'datarecorder1'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE, SELECT ON 订单数据库.* TO 'datarecorder1'@'%';
CREATE USER 'datarecorder2'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE, SELECT ON 订单数据库.* TO 'datarecorder2'@'%';
FLUSH PRIVILEGES;

/*
3、订单管理人员(2人):能对订单数据库中的订单表和订货项目表进行插入、删除、更新操作,
其它表仅能查询(注意:为了顺利进行删除更新操作,订单表和订货项目表也需要能有查询权限)。
不能创建与修改表结构及其它授权等操作。
账号名称:order_1,order_2,密码为usercode1,允许任何ip通过此用户连接数据库
*/
CREATE USER 'order_1'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.订单 TO 'order_1'@'%';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.订货项目 TO 'order_1'@'%';
GRANT SELECT ON 订单数据库.* TO 'order_1'@'%';

CREATE USER 'order_2'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.订单 TO 'order_2'@'%';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.订货项目 TO 'order_2'@'%';
GRANT SELECT ON 订单数据库.* TO 'order_2'@'%';
FLUSH PRIVILEGES;

/*
4、客户管理人员(2人):能对订单数据库中的代理商表和客户表进行插入、删除、更新,
其它表仅能查询(注意:为了顺利进行删除更新操作,代理商表和客户表也需要能有查询权限)。
不能创建与修改表结构及其它授权等操作。
账号名称:customer_1, customer_2,密码为usercode1,允许任何ip通过此用户连接数据库
*/
CREATE USER 'customer_1'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.代理商 TO 'customer_1'@'%';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.客户 TO 'customer_1'@'%';
GRANT SELECT ON 订单数据库.* TO 'customer_1'@'%';
FLUSH PRIVILEGES;

CREATE USER 'customer_2'@'%' IDENTIFIED BY 'usercode1';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.代理商 TO 'customer_2'@'%';
GRANT INSERT, DELETE, UPDATE ON 订单数据库.客户 TO 'customer_2'@'%';
GRANT SELECT ON 订单数据库.* TO 'customer_2'@'%';
FLUSH PRIVILEGES;


小知识点Tips:

该关老是不通过主要是涉及到了 FLUSH PRIVILEGES; 这一语句

FLUSH PRIVILEGES; 这个 SQL 语句的作用是:

  1. 刷新 MySQL 服务器的权限表。当您对用户账号、角色或权限进行修改后,需要执行这个语句,以确保这些更改立即生效。

  2. 通知 MySQL 服务器重新加载权限表,以确保后续的连接和查询都能使用最新的权限配置。

如果不执行 FLUSH PRIVILEGES;,有以下几点区别:

  1. 权限更改可能不会立即生效。新的权限设置可能需要等待一段时间才能生效,具体取决于 MySQL 服务器的缓存机制。

  2. 用户可能无法立即访问新授予的权限。即使您已经修改了用户的权限,但是如果不执行 FLUSH PRIVILEGES;,用户可能无法立即使用这些新权限。

  3. 可能会出现权限不一致的情况。如果您在多个会话中同时修改了权限,但没有执行 FLUSH PRIVILEGES;,那么不同会话中看到的权限可能不一致。

总之,执行 FLUSH PRIVILEGES; 可以确保权限更改立即生效,避免出现权限不一致或延迟的问题。在修改了用户账号、角色或权限后,务必执行这个语句,以确保权限配置的一致性和及时性。

结尾

开始你的任务吧,祝你成功!( 嘿嘿把头歌的通关祝语移植过来 o( ̄▽ ̄)ブ !)
撒花 ★,°:.☆( ̄▽ ̄)/$:.°★ 🔚 …

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值