[MySQL]查看用戶權限與GRANT用法

摘自:http://apps.hi.baidu.com/share/detail/15071849mysql

 

 

查看用戶權限sql

show grants for 你的用戶

好比:
show grants for root@'localhost';數據庫

Grant 用法服務器

 

 

 

GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB';
GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz'@'localhost';app

我先按個人理解解釋一下上面兩句的意思
創建一個只能夠在本地登錄的 不能操做的用用戶名 discuz 密碼爲 ***** 已經加密了的
而後第二句的意思是 ,給這個discuz用戶操做discuz數據庫的全部權限加密

使用GRANT.net

GRANT命令用來創建新用戶,指定用戶口令並增長用戶權限。其格式以下:線程

mysql> GRANT <privileges> ON <what>
-> TO <user> [IDENTIFIED BY "<password>"]
-> [WITH GRANT OPTION];ssr


  正如你看到的,在這個命令中有許多待填的內容。讓咱們逐一地對它們進行介紹,並最終給出一些例子以讓你對它們的協同工做有一個瞭解。日誌

  <privileges>是一個用逗號分隔的你想要賦予的權限的列表。你能夠指定的權限能夠分爲三種類型:

  數據庫/數據表/數據列權限: Alter: 修改已存在的數據表(例如增長/刪除列)和索引。
Create: 創建新的數據庫或數據表。
Delete: 刪除表的記錄。
Drop: 刪除數據表或數據庫。
INDEX: 創建或刪除索引。
Insert: 增長表的記錄。
Select: 顯示/搜索表的記錄。
Update: 修改表中已存在的記錄。

  全局管理權限:

file: 在MySQL服務器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控制表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。

  特別的權限:

ALL: 容許作任何事(和root同樣)。
USAGE: 只容許登陸--其它什麼也不容許作。


  這些權限所涉及到的MySQL的特徵,其中的一些咱們至今還沒看到,而其中的絕大部分是你所熟悉的。

<what> 定義了這些權限所做用的區域。*.*意味着權限對全部數據庫和數據表有效。dbName.*意味着對名爲dbName的數據庫中的全部數據表有效。 dbName.tblName意味着僅對名爲dbName中的名爲tblName的數據表有效。你甚至還能夠經過在賦予的權限後面使用圓括號中的數據列的列表以指定權限僅對這些列有效(在後面咱們將看到這樣的例子)。

  <user>指定能夠應用這些權限的用戶。在MySQL中,一個用戶經過它登陸的用戶名和用戶使用的計算機的主機名/IP地址來指定。這兩個值均可以使用%通配符(例如kevin@%將容許使用用戶名kevin從任何機器上登陸以享有你指定的權限)。

  <password>指定了用戶鏈接MySQL服務所用的口令。它被用方括號括起,說明IDENTIFIED BY "<password>"在GRANT命令中是可選項。這裏指定的口令會取代用戶原來的密碼。若是沒有爲一個新用戶指定口令,當他進行鏈接時就不須要口令。

這個命令中可選的WITH GRANT OPTION部分指定了用戶能夠使用GRANT/REVOKE命令將他擁有的權限賦予其餘用戶。請當心使用這項功能--雖然這個問題可能不是那麼明顯!例如,兩個都擁有這個功能的用戶可能會相互共享他們的權限,這也許不是你當初想看到的。

  讓咱們來看兩個例子。創建一個名爲dbmanager的用戶,他能夠使用口令managedb從server.host.net鏈接 MySQL,並僅僅能夠訪問名爲db的數據庫的所有內容(並能夠將此權限賦予其餘用戶),這能夠使用下面的GRANT命令:

mysql> GRANT ALL ON db.*
-> TO dbmanager@server.host.net
-> IDENTIFIED BY "managedb"
-> WITH GRANT OPTION;


如今改變這個用戶的口令爲funkychicken,命令格式以下:
   mysql> GRANT USAGE ON *.*
   -> TO dbmanager@server.host.net
   -> IDENTIFIED BY "funkychicken";

請注意咱們沒有賦予任何另外的權限(the USAGE權限只能容許用戶登陸),可是用戶已經存在的權限不會被改變。

  如今讓咱們創建一個新的名爲jessica的用戶,他能夠從host.net域的任意機器鏈接到MySQL。他能夠更新數據庫中用戶的姓名和 email地址,可是不須要查閱其它數據庫的信息。也就是說他對db數據庫具備只讀的權限(例如,Select),可是他能夠對Users表的name列和email列執行Update操做。命令以下:

mysql> GRANT Select ON db.*
-> TO jessica@%.host.net
-> IDENTIFIED BY "jessrules";
mysql> GRANT Update (name,email) ON db.Users
-> TO jessica@%.host.net;

  請注意在第一個命令中咱們在指定Jessica能夠用來鏈接的主機名時使用了%(通配符)符號。此外,咱們也沒有給他向其餘用戶傳遞他的權限的能力,由於咱們在命令的最後沒有帶上WITH GRANT OPTION。第二個命令示範瞭如何經過在賦予的權限後面的圓括號中用逗號分隔的列的列表對特定的數據列賦予權限。

相關文章
相關標籤/搜索