数据安全的最重要措施就是数据库账号的权限管理,通常情况下数据库账号会分配给应用程序、开发人员以及数据库管理员(DBA),还有可能分配给其他需要利用数据进行分析的非技术人员。

数据库权限

数据库权限主要是以用户可以允许执行的SQL语句来划分,SQL语言可以分为四类操作:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

非技术人员通常只能使用DQL语句,这也是权限最低的SQL操作。数据查询语言的基本结构是由SELECT子句、FROM子句WHERE子句构成。

SELECT <字段名表> FROM <表或视图名> WHERE <查询条件>

现在很多数据分析人员,都可以熟练使用SQL语言进行自定义查询,不再需要技术人员开发报表功能。

开发人员的权限管理

对于一般开发人员的权限分配,除了DQL以外,还有DML,也就是要满足增删改查(CRUD)的需求。

以下语句就是分别为普通开发人员 zhangsan 分配 MySQL 数据库的增删改查权限,delete操作要慎重分配。

grant select on testdb.* to zhangsan@’%’
grant insert on testdb.* to zhangsan@’%’
grant update on testdb.* to zhangsan@’%’
grant delete on testdb.* to zhangsan@' %’ 

对于高级开发人员的权限分配,主要需要数据定义语言DDL,利用DDL语句来创建数据库中的各种对象-----表(Table)、视图(View)、索引(Index)等。这种操作通常需要由有经验的开发人员来完成。

以下语句实现了通过 grant 语句来分配创建、修改和删除 MySQL 数据表结构的权限。

grant create on testdb.* to lisi@’192.168.0.%’;
grant alter on testdb.* to lisi@’192.168.0.%’;
grant drop on testdb.* to lisi@’192.168.0.%’; 

分配创建 MySQL 外键权限。

grant references on testdb.* to lisi@’192.168.0.%’; 

分配创建 MySQL 临时表权限。

grant create temporary tables on testdb.* to lisi@’192.168.0.%’; 

分配创建 MySQL 索引权限。

grant index on testdb.* to lisi@’192.168.0.%’; 

分配创建 MySQL 视图、查看视图源代码权限。

grant create view on testdb.* to lisi@’192.168.0.%’;
grant show view on testdb.* to lisi@’192.168.0.%’; 

分配创建 MySQL 存储过程、函数权限。

grant create routine on testdb.* to lisi@’192.168.0.%’; — now, can show procedure status
grant alter routine on testdb.* to lisi@’192.168.0.%’; — now, you can drop a procedure
grant execute on testdb.* to lisi@’192.168.0.%’; 

更高权限的分配

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等,通常这种特殊权限会分配给DBA使用。如:

GRANT:授权。
ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚命令使数据库状态回到上次最后提交的状态。
COMMIT [WORK]:提交。
以下语句将testdb的所有权限都分配给dba账户

grant all privileges on testdb to dba@’localhost’ 

其中,关键字 “privileges” 可以省略。

以下语句更厉害,将使得高级 DBA 获得管理 MySQL 中所有数据库的权限。

grant all on *.* to dba@’localhost’ 

权限的撤销

使用revoke语句可以撤销已经赋予给 MySQL 用户权限的权限。revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost; 

在使用grant 或 revoke语句分配或撤销权限后,该用户只有重新连接 MySQL 数据库,新的权限才能生效。

总结

在数据库权限分配和管理中,应当严格区分账户的用途,并按照最小可用原则分配对应的权限。当账户不再使用以后,应当立即收回权限。

数据库权限的分配与回收相关推荐

  1. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

    文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...

  2. oracle all_policies,Oracle数据库权限管理学习笔记

    1)权限,角色和用户的关系 权限(privilege):Oracle数据库预先定义好的.执行某些操作的能力. 角色(role):一组相关权限的集合.可以利用角色来简化权限的管理. 用户(user):通 ...

  3. 【MYSQL权限】数据库权限部署

    背景:没有划分数据库权限,所有人共用一个账号 本人公司现有的数据库账号分布情况: 所有人用一个账号(包括程序里面访问数据库的的配置文件里面的账号),该账号除删库权限,其他权限大部分都有. 这样非数据库 ...

  4. Oracle中的用户创建和权限的分配

    1.数据库安装时的参数设定 下面数据库所用的版本为ORACLE 9I (9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\oracle,数据库名与数据库SID号都输入: ...

  5. UGA由哪几部分组成和PGA上内存空间的分配与回收的方式

    一.UGA由哪几部分组成? 由上述图片可知, 一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared  Areas,该Shared  Areas的类型为Sh ...

  6. PGA内存空间的分配与回收

    一.UGA由哪几部分组成? 由上述图片可知, 一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared  Areas,该Shared  Areas的类型为Sh ...

  7. mysql数据库权限查询_mysql数据库权限管理

    mysql数据库权限管理 # 查看权限 # 使用mysql数据库 mysql> use mysql; # 查看所有用户和权限 # 查询主机用户名密码:5.7版本之前的 mysql> sel ...

  8. openGauss数据库权限管理模型(下)

    openGauss数据库采用基于角色的权限访问控制模型,除了在openGauss数据库权限管理模型(上)中介绍的基本系统权限和对象权限的划分外,还有一些高阶的权限管理机制用来满足客户的业务诉求. 1 ...

  9. 实验四 主存空间的分配和回收

    实验四 主存空间的分配和回收 一.目的和要求 1.1. 实验目的 用高级语言完成一个主存空间的分配和回收程序,以加深对动态分区分配方式及其算法的理解. 1.2. 实验要求 采用连续分配方式之动态分区分 ...

最新文章

  1. python可变交换性能优化
  2. CSS中常见的长度单位
  3. oracle 双结点监听文件,RAC监听服务两个节点 只能起一个
  4. STL常用的查找算法
  5. 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...
  6. .NET 开源配置组件 AgileConfig 初体验
  7. 草稿 断开绑dgv1
  8. ❤️《网络编程从入门到入魔》(建议收藏)❤️
  9. iOS - Analyze 静态分析
  10. double几位小数_算法竞赛入门之每日一题:分数化化小数(decimal) C语言
  11. 【历史上的今天】7 月 14 日:MP3 诞生日;系统动力学的开创者诞生;正面战胜 IBM 的计算机公司
  12. unity android判断是否横屏,android 强制设置横屏 判断是横屏还是竖屏
  13. 在计算机上如何打开资源管理器,资源管理器怎么打开?打开资源管理器的5种方法...
  14. 2022茶艺师(中级)国家题库模拟考试平台操作
  15. 给程序员简历的一些建议
  16. java 屏幕识别_Java课程设计:捕获图片以及识别图中的文字
  17. 接口传输带格式的文字和图片_2020最漂亮早上好表情图带字带祝福文字,清晨最暖心的祝福语图片...
  18. 开源轻量级显示框架LVGL简介
  19. 尝试进入Vulkan的ValidationLayer中的代码调用栈
  20. LTE系统调试记录14:频谱感知模块——UE/BS端采用多窗谱算法测量频谱

热门文章

  1. GitHub重大更新:在线开发上线,是时候卸载IDE了
  2. 12岁上中科大,17岁哈佛博士,31岁成哈佛教授,学神认识一下?
  3. 初识广度优先搜索与解题套路
  4. Python3.5源码分析-垃圾回收机制
  5. Python设计模式-代理模式
  6. RESTful之视图集ViewSet
  7. ACMNO.49:一元三次方程求解(主要就是精度问题)
  8. 使用深度学习和OpenCV的早期火灾检测系统
  9. ResNet及其变体结构梳理与总结
  10. 使用多尺度空间注意力的语义分割方法