数据库权限数据库权限主要以允许用户执行的SQL语句来划分。SQL语言可分为四种操作类型:数据查询语言DQL、数据操作语言DML、数据定义语言DDL、数据控制语言DCL。非技术人员通常只能使用DQL语句,这也是最低权限的SQL操作。数据查询语言的基本结构由SELECT子句、FROM子句和WHERE子句组成。SELECT<字段名表>FROM<表或视图名>WHERE<查询条件>现在很多数据分析师都熟练使用SQL语言进行自定义查询,不再需要技术人员去开发报表功能。开发者的权限管理对于一般开发者的权限分配,除了DQL,还有DML,也就是为了满足CRUD的需要。下面语句是给普通开发者zhangsan分配对MySQL数据库的增删改查权限,删除操作要慎重分配。grantselectontestdb.*tozhangsan@'%'grantinsertontestdb.*tozhangsan@'%'grantupdateontestdb.*tozhangsan@'%'grantdeleteontestdb.*tozhangsan@'%'对于高级开发人员的权限分配,主要需要数据定义语言DDL,使用DDL语句来创建数据库中的各种对象-----表(Table)、视图(View)、索引(Index)等。这个操作通常需要有经验的开发人员来完成。下面的语句实现了grant语句来分配创建、修改、删除MySQL数据表结构的权限。grantcreateontestdb.*tolisi@'192.168.0.%';grantalterontestdb.*tolisi@'192.168.0.%';grantdropontestdb.*tolisi@'192.168.0.%';分配创建MySQL外键的权限。grantreferencesontestdb.*tolisi@'192.168.0.%';分配创建MySQL临时表的权限。grantcreatetemporarytablesontestdb.*tolisi@'192.168.0.%';分配创建MySQL索引的权限。grantindexontestdb.*tolisi@'192.168.0.%';分配创建MySQL视图和查看源代码的权限。grantcreateviewontestdb.*tolisi@'192.168.0.%';grantshowviewontestdb.*tolisi@'192.168.0.%';分配创建MySQL存储过程和函数的权限。grantcreateroutineontestdb.*tolisi@'192.168.0.%';—now,canshowprocedurestatusgrantalterroutineontestdb.*tolisi@'192.168.0.%';—now,youcandropaproceduregrantexecuteontestdb.*tolisi@'192.168.0.%';数据控制语言DCL用于授予或撤销某些访问数据库的权限,控制数据库操作事务的时间和效果,监控数据库等。通常,这种特殊权限会被分配给DBA。如:GRANT:授权。ROLLBACK[WORK]TO[SAVEPOINT]:回滚到某个点。回滚命令将数据库状态恢复到上次提交时的状态。提交[WORK]:提交。以下语句将testdb的所有权限分配给dba账户grantallprivilegesontestdbtodba@'localhost',其中关键字“privileges”可以省略。下面这条语句就更厉害了,将使高级DBA获得管理MySQL中所有数据库的权限。grantallon*.*todba@'localhost'权限的撤销可以使用revoke语句来撤销已经授予MySQL用户的权限。revoke的语法和grant类似,只需要将关键字to替换成from即可:grantallon*.*todba@localhost;revokeallon*.*fromdba@localhost;使用grant或revoke语句分配或撤销权限后,新的权限只有在用户重新连接到MySQL数据库后才会生效。综上所述,在数据库权限的分配和管理中,应严格区分账户的用途,按照可用性最低的原则分配相应的权限。当帐号不再使用时,应立即撤销权限。
