1. [代碼]查看用戶權限
1 |
show
grants for 你的用戶; |
2 |
show
grants for root@ 'localhost' ; |
3 |
show
grants for [email protected]; |
4 |
show create database dbname;
這個可以看到創建數據庫時用到的一些參數。 |
5 |
show create table tickets;
可以看到創建表時用到的一些參數 |
2. [代碼][SQL]代碼
001 |
GRANT USAGE ON *.* TO 'discuz' @ 'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69FC79A86EB' ; |
002 |
GRANT ALL PRIVILEGES ON `discuz`.* TO 'discuz' @ 'localhost' ; |
003 |
004 |
我先按我的理解解釋一下上面兩句的意思 |
005 |
建立一個只可以在本地登陸的
不能操作的用用戶名 discuz 密碼爲 ***** 已經加密了的 |
006 |
然後第二句的意思是
,給這個discuz用戶操作discuz數據庫的所有權限 |
007 |
008 |
使用 GRANT |
009 |
010 |
GRANT 命令用來建立新用戶,指定用戶口令並增加用戶權限。其格式如下: |
011 |
012 |
mysql> GRANT < privileges > ON <what> |
013 |
-> TO < user >
[IDENTIFIED BY "<password>" ] |
014 |
->
[ WITH GRANT OPTION ]; |
015 |
016 |
017 |
正如你看到的,在這個命令中有許多待填的內容。讓我們逐一地對它們進行介紹,並最終給出一些例子以讓你對它們的協同工作有一個瞭解。 |
018 |
019 |
< privileges >是一個用逗號分隔的你想要賦予的權限的列表。你可以指定的權限可以分爲三種類型: |
020 |
021 |
數據庫/數據表/數據列權限: Alter :
修改已存在的數據表(例如增加/刪除列)和索引。 |
022 |
Create :
建立新的數據庫或數據表。 |
023 |
Delete :
刪除表的記錄。 |
024 |
Drop :
刪除數據表或數據庫。 |
025 |
INDEX :
建立或刪除索引。 |
026 |
Insert :
增加表的記錄。 |
027 |
Select :
顯示/搜索表的記錄。 |
028 |
Update :
修改表中已存在的記錄。 |
029 |
030 |
全局管理權限: |
031 |
032 |
file:
在MySQL服務器上讀寫文件。 |
033 |
PROCESS:
顯示或殺死屬於其它用戶的服務線程。 |
034 |
RELOAD:
重載訪問控制表,刷新日誌等。 |
035 |
SHUTDOWN:
關閉MySQL服務。 |
036 |
037 |
特別的權限: |
038 |
039 |
ALL :
允許做任何事(和root一樣)。 |
040 |
USAGE:
只允許登錄 --其它什麼也不允許做。 |
041 |
042 |
043 |
這些權限所涉及到的MySQL的特徵,其中的一些我們至今還沒看到,而其中的絕大部分是你所熟悉的。 |
044 |
045 |
<what>
定義了這些權限所作用的區域。*.*意味着權限對所有數據庫和數據表有效。dbName.*意味着對名爲dbName的數據庫中的所有數據表有效。 dbName.tblName意味着僅對名爲dbName中的名爲tblName的數據表有效。你甚至還可以通過在賦予的權限後面使用圓括號中的數據列的列表以指定權限僅對這些列有效(在後面我們將看到這樣的例子)。 |
046 |
047 |
< user >指定可以應用這些權限的用戶。在MySQL中,一個用戶通過它登錄的用戶名和用戶使用的計算機的主機名/IP地址來指定。這兩個值都可以使用%通配符(例如kevin@%將允許使用用戶名kevin從任何機器上登錄以享有你指定的權限)。 |
048 |
049 |
< password >指定了用戶連接MySQL服務所用的口令。它被用方括號括起,說明IDENTIFIED BY "<password>" 在 GRANT 命令中是可選項。這裏指定的口令會取代用戶原來的密碼。如果沒有爲一個新用戶指定口令,當他進行連接時就不需要口令。 |
050 |
051 |
這個命令中可選的 WITH GRANT OPTION 部分指定了用戶可以使用 GRANT / REVOKE 命令將他擁有的權限賦予其他用戶。請小心使用這項功能 --雖然這個問題可能不是那麼明顯!例如,兩個都擁有這個功能的用戶可能會相互共享他們的權限,這也許不是你當初想看到的。 |
052 |
053 |
讓我們來看兩個例子。建立一個名爲dbmanager的用戶,他可以使用口令managedb從server.host.net連接
MySQL,並僅僅可以訪問名爲db的數據庫的全部內容(並可以將此權限賦予其他用戶),這可以使用下面的 GRANT 命令: |
054 |
055 |
mysql> GRANT ALL ON db.* |
056 |
-> TO [email protected] |
057 |
->
IDENTIFIED BY "managedb" |
058 |
-> WITH GRANT OPTION ; |
059 |
060 |
061 |
現在改變這個用戶的口令爲funkychicken,命令格式如下: |
062 |
mysql> GRANT USAGE ON *.* |
063 |
-> TO [email protected] |
064 |
-> IDENTIFIED BY "funkychicken" ; |
065 |
066 |
請注意我們沒有賦予任何另外的權限(the
USAGE權限只能允許用戶登錄),但是用戶已經存在的權限不會被改變。 |
067 |
068 |
現在讓我們建立一個新的名爲jessica的用戶,他可以從host.net域的任意機器連接到MySQL。他可以更新數據庫中用戶的姓名和
email地址,但是不需要查閱其它數據庫的信息。也就是說他對db數據庫具有隻讀的權限(例如, Select ),但是他可以對Users表的 name 列和email列執行 Update 操作。命令如下: |
069 |
070 |
mysql> GRANT Select ON db.* |
071 |
-> TO jessica@%.host.net |
072 |
->
IDENTIFIED BY "jessrules" ; |
073 |
mysql> GRANT Update ( name ,email) ON db.Users |
074 |
-> TO jessica@%.host.net; |
075 |
076 |
077 |
請注意在第一個命令中我們在指定Jessica可以用來連接的主機名時使用了%(通配符)符號。此外,我們也沒有給他向其他用戶傳遞他的權限的能力,因爲我們在命令的最後沒有帶上 WITH GRANT OPTION 。第二個命令示範瞭如何通過在賦予的權限後面的圓括號中用逗號分隔的列的列表對特定的數據列賦予權限。 |
078 |
079 |
----------------------------------------------------- |
080 |
081 |
mysql> grant select , insert , update , delete on 111.* to hongdadbuser@ "%" identified by "111" ; |
082 |
083 |
084 |
085 |
086 |
測試環境:WIN32
mysql5.0.45 |
087 |
088 |
089 |
首先要聲明一下:一般情況下,修改MySQL密碼,授權,是需要有mysql裏的root權限的。 |
090 |
091 |
注:本操作是在WIN命令提示符下,phpMyAdmin同樣適用。 |
092 |
用戶:phplamp
用戶數據庫:phplampDB |
093 |
094 |
1.新建用戶。 |
095 |
096 |
//登錄MYSQL |
097 |
@>mysql
-u root -p |
098 |
@>密碼 |
099 |
//創建用戶 |
100 |
mysql> insert into mysql. user (Host, User , Password ) values ( "localhost" , "phplamp" , password ( "1234" )); |
101 |
//刷新系統權限表 |
102 |
mysql>flush privileges ; |
103 |
這樣就創建了一個名爲:phplamp
密碼爲:1234 的用戶。 |
104 |
105 |
然後登錄一下。 |
106 |
107 |
mysql>exit; |
108 |
@>mysql
-u phplamp -p |
109 |
@>輸入密碼 |
110 |
mysql>登錄成功 |
111 |
112 |
2.爲用戶授權。 |
113 |
114 |
//登錄MYSQL(有ROOT權限)。我裏我以ROOT身份登錄. |
115 |
@>mysql
-u root -p |
116 |
@>密碼 |
117 |
//首先爲用戶創建一個數據庫(phplampDB) |
118 |
mysql> create database phplampDB; |
119 |
//授權phplamp用戶擁有phplamp數據庫的所有權限。 |
120 |
> grant all privileges on phplampDB.* to phplamp@localhost
identified by '1234' ; |
121 |
//刷新系統權限表 |
122 |
mysql>flush privileges ; |
123 |
mysql>其它操作 |
124 |
125 |
/* |
126 |
如果想指定部分權限給一用戶,可以這樣來寫: |
127 |
mysql> grant select , update on phplampDB.* to phplamp@localhost
identified by '1234' ; |
128 |
//刷新系統權限表。 |
129 |
mysql>flush privileges ; |
130 |
*/ |
131 |
132 |
3.刪除用戶。 |
133 |
@>mysql
-u root -p |
134 |
@>密碼 |
135 |
mysql> DELETE FROM user WHERE User = "phplamp" and Host= "localhost" ; |
136 |
mysql>flush privileges ; |
137 |
//刪除用戶的數據庫 |
138 |
mysql> drop database phplampDB; |
139 |
140 |
4.修改指定用戶密碼。 |
141 |
@>mysql
-u root -p |
142 |
@>密碼 |
143 |
mysql> update mysql. user set password = password ( '新密碼' ) where User = "phplamp" and Host= "localhost" ; |
144 |
mysql>flush privileges ; |
145 |
146 |
------------------------------------------------- |
147 |
148 |
mysql> grant all privileges on webgame_test.* to [email protected]
identified by 'gametestdb' ; |
149 |
Query
OK, 0 rows affected
(0.01 sec) |
150 |
151 |
mysql>
flush privileges ; |
152 |
Query
OK, 0 rows affected
(0.01 sec) |
153 |
154 |
mysql>
exit; |
155 |
156 |
show
grants for [email protected]; |