MYSQL用户权限管理(Grant,Revoke)
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數據庫,表允許用戶拖動(刪除)數據庫或表
管理員權限權限描述
CREATETEMPORARYTABLES允許管理員在CREATETABLE語句中使用TEMPORARY關鍵字
FILE允許將數據從文件讀入表,或從表讀入文件
LOCKTABLES允許使用LOCKTABLES語句
PROCESS允許管理員查看屬于所有用戶的服務器進程
RELOAD允許管理員重新載入授權表、清空授權、主機、日志和表格
REPLICATIONCLIENT允許在復制主機(Master)和從機(Slave)上使用SHOWSTATUS
REPLICATIONSLAVE允許復制從服務器連接到主服務器
SHOWDATABASES允許使用SHOWDATABASES語句查看所有的數據庫列表。沒有這個權限,用戶只能看到他們能夠看到的數據庫
SHUT DOWN允許管理員關閉MySQL服務器
SUPER允許管理員關閉屬于任何用戶的線程
特別的權限權限描述
ALL(或ALLPREVILEGES)授予所有權限
USAGE不授予權限。這將創建一個用戶并允許他登錄,但不允許其他操作,如update/select等
實例:
例如:
mysql>grant select,insert,update,delete ontest.user tomql@localhostidentified by ‘123456′;
給本地的用戶mql分配可對數據庫test的user表進行select,insert,update,delete操作的權限,并設定口令為 123456。若mql用戶不存在,則將自動創建此用戶. 具體的權限控制在mysql.db表中可以查看到.也可直接對這個表進行更新操作進行權限的修改.
mysql>grant all privileges on test.* tomql@localhostidentified by ‘123456′;
給本地用戶mql分配可對數據庫test所有表進行所有操作的權限,并設定口令為123456。
mysql>grant all privileges on *.* tomql@localhostidentified by ‘123456′;
給本地用戶mql分配可對所有數據庫的所有表進行所有操作的權限,并設定口令為123456。
mysql>grant all privileges on *.* to mql2@61.127.46.128identified by ‘123456′;
給來自61.127.46.128的用戶mql2分配可對所有數據庫的所有表進行所有操作的權限,并設定口令為123456。
REVOKE
REVOKE和作用和GRANT相反,語法格式為:
REVOKEprivilegesON數據庫名[.表名] FROMuser_name
例如:
創建用戶Bob,密碼為“bob”,但不給他任何權限:
GRANTusageon*toBobidentifiedby’bob’;
授予Bob在books數據庫中的查詢和插入權限:
GRANTselect,insertonbooks.*toBob;
取消Bob在books數據庫中的所有權限:
REVOKEallonbooks.*fromBob;
注:需要指出的是,REVOKEall...僅僅是回收用戶的權限,并不刪除用戶。在MySQL中,用戶信息存放在mysql.User中。MySQL可以通過DROPUSER來徹底刪除一個用戶,其用法為:
DROPUSERuser_name;
例如,要刪除用戶Bob,可以用:
DROPUSERBob;
總結
以上是生活随笔為你收集整理的MYSQL用户权限管理(Grant,Revoke)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的简单介绍以及二叉树的存储结构
- 下一篇: oracle命令行查看编码,Oracle