服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 云安全:数据库权限的分配与回收

云安全:数据库权限的分配与回收

2021-08-08 23:30今日头条微说互联网 编程技术

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

云安全:数据库权限的分配与回收

 数据库权限

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

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

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

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

开发人员的权限管理

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

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

  1. grant select on testdb.* to zhangsan@’%’ 
  2. grant insert on testdb.* to zhangsan@’%’ 
  3. grant update on testdb.* to zhangsan@’%’ 
  4. grant delete on testdb.* to zhangsan@' %’ 

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

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

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

分配创建 MySQL 外键权限。

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

分配创建 MySQL 临时表权限。

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

分配创建 MySQL 索引权限。

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

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

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

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

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

更高权限的分配

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

  • GRANT:授权。
  • ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚命令使数据库状态回到上次最后提交的状态。
  • COMMIT [WORK]:提交。

以下语句将testdb的所有权限都分配给dba账户

  1. grant all privileges on testdb to dba@’localhost’ 

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

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

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

权限的撤销

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

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

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

总结

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

原文链接:https://www.toutiao.com/a6993698027584225795/

延伸 · 阅读

精彩推荐
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5232021-06-21
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5972021-03-08
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20