MYSQL用戶權限管理(Grant,Revoke)

http://blog.csdn.net/fafa211/article/details/2249217


MySQL可以爲不同的用戶分配嚴格的、複雜的權限。這些操作大多都可以用SQL指令Grant(分配權限)和Revoke(回收權限)來實現。 Grant可以把指定的權限分配給特定的用戶,如果這個用戶不存在,則會創建一個用戶。

 Grant 常用格式:

grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;

權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能爲空,否則創建失敗。

比較重要的是priveleges(權限)。 
普通用戶的權限權限應用於描述 
SELECT表,列允許用戶從表中選擇行(記錄) 
INSERT表,列允許用戶在表中插入新行 
UPDATE表,列允許用戶修改現存表裏行中的值 
DELETE表允許用戶刪除現存表的行 
INDEX表允許用戶創建和拖動特定表索引 
ALTER表允許用戶改變現存表的結構。例如,可添加列、重命名列或表、修改列的數據類型 
CREATE數據庫,表允許用戶創建新數據庫或表。如果在GRANT中指定了一個特定的數據庫或表,他們只能夠創建該數據庫或表,即他們必須首先刪除(Drop)它 
DROP數據庫,表允許用戶拖動(刪除)數據庫或表 

管理員權限權限描述 
CREATE TEMPORARY TABLES允許管理員在CREATE TABLE語句中使用TEMPORARY關鍵字 
FILE允許將數據從文件讀入表,或從表讀入文件 
LOCK TABLES允許使用LOCK TABLES語句 
PROCESS允許管理員查看屬於所有用戶的服務器進程 
RELOAD允許管理員重新載入授權表、清空授權、主機、日誌和表格 
REPLICATION CLIENT允許在複製主機(Master)和從機(Slave)上使用SHOW STATUS 
REPLICATION SLAVE允許複製從服務器連接到主服務器 
SHOW DATABASES允許使用SHOW DATABASES語句查看所有的數據庫列表。沒有這個權限,用戶只能看到他們能夠看到的數據庫 
SHUTDOWN允許管理員關閉MySQL服務器 
SUPER允許管理員關閉屬於任何用戶的線程 

特別的權限權限描述 
ALL(或ALL PREVILEGES)授予所有權限 
USAGE不授予權限。這將創建一個用戶並允許他登錄,但不允許其他操作,如update/select 等

實例:

例如:
mysql>grant select,insert,update,delete on test.user to mql@localhost identified by ‘123456′;
給本地的用戶mql分配可對數據庫test的user表進行select,insert,update,delete操作的權限,並設定口令爲123456。若mql用戶不存在,則將自動創建此用戶. 具體的權限控制在mysql.db表中可以查看到.也可直接對這個表進行更新操作進行權限的修改.

mysql>grant all privileges on test.* to mql@localhost identified by ‘123456′;
給本地用戶mql分配可對數據庫test所有表進行所有操作的權限,並設定口令爲123456。

mysql>grant all privileges on *.* to mql@localhost identified by ‘123456′;
給本地用戶mql分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123456。

mysql>grant all privileges on *.* to mql2@61.127.46.128 identified by ‘123456′;
給來自61.127.46.128的用戶mql2分配可對所有數據庫的所有表進行所有操作的權限,並設定口令爲123456。

REVOKE 
REVOKE和作用和GRANT相反,語法格式爲: 
REVOKE privileges ON 數據庫名[.表名] FROM user_name 

例如:
創建用戶Bob,密碼爲“bob”,但不給他任何權限: 
GRANT usage on * to Bob identified by ’bob’; 
授予Bob在books數據庫中的查詢和插入權限: 
GRANT select, insert on books.* to  Bob; 
取消Bob在books數據庫中的所有權限: 
REVOKE all on books.* from Bob; 
注:需要指出的是,REVOKE all...僅僅是回收用戶的權限,並不刪除用戶。在MySQL中,用戶信息存放在mysql.User中。MySQL可以通過DROP USER來徹底刪除一個用戶,其用法爲: 
DROP USER user_name;  
例如,要刪除用戶Bob,可以用: 
DROP USER Bob; 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章