專門講講這個MYSQL受權當中的with grant option的做用

對象的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

相關文章
相關標籤/搜索