本文实例,运行于MySQL5.0及以上版本。MySQL赋予用户权限的格式可概括为
1
grant 权限 on 数据库对象 to 用户
一、grant普通数据用户
1
2
3
4
grant select on testdb.* to common_user@'%' -- 查询
grant insert on testdb.* to common_user@'%' -- 插入
grant update on testdb.* to common_user@'%' -- 更新
grant delete on testdb.* to common_user@'%' -- 删除
或者,用一条MySQL命令来替代
1
grant select, insert, update, delete on testdb.* to common_user@'%'
二、grant数据库开发人员
-
grant创建、修改、删除MySQL数据表结构权限
1 2 3
grant create on testdb.* to developer@'192.168.0.%'; grant alter on testdb.* to developer@'192.168.ssss0.%'; grant drop on testdb.* to developer@'192.168.0.%';
-
grant操作MySQL外键权限
1
grant references on testdb.* to developer@'192.168.0.%';
-
grant操作MySQL临时表权限
1
grant create temporary tables on testdb.* to developer@'192.168.0.%';
-
grant操作MySQL索引权限
1
grant index on testdb.* to developer@'192.168.0.%';
-
grant操作MySQL视图、查看视图源代码权限
1 2
grant create view on testdb.* to developer@'192.168.0.%'; grant show view on testdb.* to developer@'192.168.0.%';
-
grant操作MySQL存储过程、函数权限
1 2 3 4
grant create routine on testdb.* to developer@'192.168.0.%'; -- now, can show procedure status grant alter routine on testdb.* to developer@'192.168.0.%'; grant execute on testdb.* to developer@'192.168.0.%';
三、grant普通DBA管理某个MySQL数据库的权限
1
grant all privileges on testdb to dba@'localhost'
其中,关键字 “privileges” 可以省略。
四、grant高级DBA管理MySQL中所有数据库的权限
1
grant all on *.* to dba@'localhost'
五、MySQL grant权限,分别可以作用在多个层次上
-
grant作用在整个MySQL服务器上
1 2
grant select on *.* to dba@localhost; -- dba可以查询MySQL中所有数据库中的表。 grant all on *.* to dba@localhost; -- dba可以管理MySQL中的所有数据库
-
grant作用在单个数据库上
1
grant select on testdb.* to dba@localhost; -- dba可以查询testdb中的表。
-
grant作用在单个数据表上
1
grant select, insert, update, delete on testdb.orders to dba@localhost;
-
grant作用在表中的列上
1
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
-
grant作用在存储过程、函数上
1 2
grant execute on procedure testdb.pr_add to 'dba'@'localhost' grant execute on function testdb.fn_add to 'dba'@'localhost'
六、查看MySQL用户权限
-
查看当前用户(自己)权限
1
show grants;
-
查看其他 MySQL 用户权限
1
show grants for dba@localhost;
七、撤销已经赋予给MySQL用户的权限
revoke跟grant的语法差不多,只需要把关键字“to”换成“from”即可
1
2
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;