对象的owner将权限赋予某个用户(如:testuser1)mysql
grant select ,update on bd_corp to testuser1 [with grant option ]
1.若是带了 with grant option
那么用户testuser1能够将select ,update权限传递给其余用户( 如testuser2)
grant select,update on bd_corp to testuser2
2.若是没带with grant option
那么用户testuser1不能给testuser2受权
简单的说就是将权限传递给第三方sql
~~~~~~~~~~~~~~~~~~~~数据库
~~~~~~~~~~~~~~~~~~~~ide
受权表使用举例
grant用于给增长用户和建立权限,revoke用于删除用户权限。
下面是一些用grant增长用户和建立权限的例子:
mysql> grant all privileges on *.* to test@localhost identified by 'test' with grant option;
这句增长一个本地具备全部权限的test用户(超级用户),密码是test。ON子句中的*.*意味着"全部数据库、全部表"。with grant option表示它具备grant权限。
mysql> grant select,insert,update,delete,create,drop privileges on test.* to test1@'192.168.1.0/255.255.255.0' identified by 'test';
这句是增长了一个test1用户,口令是test,可是它只能从C类子网192.168.1链接,对test库有select,insert,update,delete,create,drop操做权限。
用grant语句建立权限是不须要再手工刷新受权表的,由于它已经自动刷新了。
给用户建立权限还能够经过直接修改受权表:
mysql> insert into user
values("localhost","test",password("test"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");
mysql> flush privileges;
这两句和上面第一句grant的效果是同样的,也是增长了一个本地的test超级用户。咱们看到用grant方便多了,并且还不需flush privileges。
mysql> insert into user (host,user,password) values("192.168.1.0/255.255.255.0","test1",PASSWORD("test")); mysql> insert into db values("192.168.1.0/255.255.255.0","test","test1","Y","Y","Y","Y","Y","Y","N","N","N","N") mysql> flush privileges;
这三句和上面第二句grant的效果也是同样的,也是增长了一个只能从C类子网192.168.1链接,对test库有select,insert,update,delete,create,drop操做权限的test1用户,口令是test。要取消一个用户的权限,使用revoke语句。revoke的语法很是相似于grant语句,除了to用from取代而且没有identified by和with grant option子句,下面是用revoke删除用户权限的例子:
mysql> revoke all on test.* from test1@'192.168.1.0/255.255.255.0';
这句revoke就撤消了上面第二句grant建立的权限,可是test1用户并无被删除,必须手工从user表删除:
mysql> delete from user where user='test1';
mysql> flush privileges;
这样,test1用户就完全删除了。 spa