语法:
#1.授予权限 grant 权限 on 授权对象(库名.表名) to '用户名'@'网段' identified by '该用户的密码' 【with grant option】; #2.收回权限 revoke 权限 on 授权对象(库名.表名) from '用户名'@'网段' identified by '该用户的密码';注意:
with grant option:表示让该授权的用户,也可以将它的权限赋予给其他用户。
授权对象的被授权的范围的写法:
*.*:意为所有的数据库及表。
数据库名.*:意为该数据库下的所有表。
数据库名.数据表名:意为该数据库下的该数据表。
被授权的用户的写法,%代替一整个网段:
‘用户名’@’%’:意为所有网段都可以用该用户登陆数据库。
‘用户名’@‘192.168.123.234’:意为只有此IP可使用该用户登陆数据库。
‘用户名’@‘192.168.122.%’:意为192.168.122该网段的所有主机都可使用该用户登陆数据库。
权限说明:
all privileges:除with grant option(让授权的用户,也可以将这些权限grant给其他用户,权限复制)之外的所有权限。
alter:对数据表的修改的权限。
alter routine:更改或者删除存储函数或者存储过程的权限。
create:创建数据库及表的权限。
create routine:更改和弃用存储过程的能力。
create temporary tables:创建临时表的权限。
create user:创建、重命名和撤销用户的权限。
create view:创建视图的权限。
delete:数据表中删除数据的权限。
drop:允许删除数据库、表、视图的权限。
execute:执行存储过程或者调用函数的权限。
event:允许查询,创建,修改,删除MySQL事件的权限。
file:对系统中的文件(本地文件)读取和写操作的权限。
grant option:用户委派权限的权限。
index:创建、删除索引的权限。
insert:向表中插入数据的权限。
lock tables:允许对拥有select权限的表进行锁表的权限。
process:查看所有用户线程/连接的权限。
references:5.7.6版本后,允许是否创建外键的权限。
reload:允许执行flush,重新加载权限表的权限。
replication client:允许用户查询从服务器和主服务器位置的权限。
replication slave:允许slave主机通过此用户连接master建立主从的权限。
select:允许从表中查看数据的权限。
show databases:查看所有数据库名的权限。
show view:查看视图详细信息的权限。
shutdown:允许关闭数据库实例的权限。
super:允许执行一系列数据库管理命令的权限(change、master、kill thread、mysqladmindebug、purge master logs、set global…)。
trigger:MySQL5.1.6后,允许创建,删除,执行,显示触发器的权限。
update:允许修改表中的数据的权限。
usage:创建一个用户之后的默认权限,只代表连接,无其他任何权限。
案例:
#创建用户并授予只读权限 grant select on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予插入数据权限 grant insert on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予改变原有数据的权限 grant update on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予删除数据的权限 grant delete on 数据库名.* to 用户@'网段或ip' identified by '密码'; #要拥有以上所有权限,可写为一条,权限间用逗号隔开 grant select, insert, update, delete on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予所有权限 grant all privileges on 数据库名.数据表明 to 用户@'网段或ip' identified by '密码'; #创建用户并授予其对数据表的创建的权限 grant create on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据表的修改权限 grant alter on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库/表/视图的删除的权限 grant drop on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库下表的设置外键的权限 grant references on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库的设置临时表权限 grant create temporary tables on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围的表设置索引的权限 grant index on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内创建视图的权限 grant create view on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内查看视图的权限 grant show view on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内存储过程、函数的权限 grant create routine on 数据库名.* to 用户@'网段或IP'; grant alter routine on 数据库名.* to 用户@'网段或IP'; grant execute on 数据库名.* to 用户@'网段或IP'; #创建用户并授予其对数据表中列的权限 grant select(列的名字) on 数据库.数据表 to 用户@'网段或IP' identified by '密码'; -- 如有很多列,要用逗号隔开 #创建用户并授予对数据表中的存储过程和函数的权限 grant execute on procedure 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码'; grant execute on function 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';