本文實(shí)例,運(yùn)行于 MySQL 5.0 及以上版本。
MySQL 賦予用戶權(quán)限命令的簡(jiǎn)單格式可概括為:
grant 權(quán)限 on 數(shù)據(jù)庫對(duì)象 to 用戶
一、grant 普通數(shù)據(jù)用戶,查詢、插入、更新、刪除 數(shù)據(jù)庫中所有表數(shù)據(jù)的權(quán)利。
或者,用一條 MySQL 命令來替代:
二、grant 數(shù)據(jù)庫開發(fā)人員,創(chuàng)建表、索引、視圖、存儲(chǔ)過程、函數(shù)。。。等權(quán)限。
grant 創(chuàng)建、修改、刪除 MySQL 數(shù)據(jù)表結(jié)構(gòu)權(quán)限。
grant 操作 MySQL 外鍵權(quán)限。
grant 操作 MySQL 臨時(shí)表權(quán)限。
grant 操作 MySQL 索引權(quán)限。
grant index on testdb.* to developer@'192.168.0.%';
grant 操作 MySQL 視圖、查看視圖源代碼 權(quán)限。
grant 操作 MySQL 存儲(chǔ)過程、函數(shù) 權(quán)限。
三、grant 普通 DBA 管理某個(gè) MySQL 數(shù)據(jù)庫的權(quán)限。
其中,關(guān)鍵字 “privileges” 可以省略。
四、grant 高級(jí) DBA 管理 MySQL 中所有數(shù)據(jù)庫的權(quán)限。
五、MySQL grant 權(quán)限,分別可以作用在多個(gè)層次上。
1. grant 作用在整個(gè) MySQL 服務(wù)器上:
2. grant 作用在單個(gè)數(shù)據(jù)庫上:
3. grant 作用在單個(gè)數(shù)據(jù)表上:
這里在給一個(gè)用戶授權(quán)多張表時(shí),可以多次執(zhí)行以上語句。例如:
4. grant 作用在表中的列上:
5. grant 作用在存儲(chǔ)過程、函數(shù)上:
六、查看 MySQL 用戶權(quán)限
查看當(dāng)前用戶(自己)權(quán)限:
查看其他 MySQL 用戶權(quán)限:
七、撤銷已經(jīng)賦予給 MySQL 用戶權(quán)限的權(quán)限。
revoke 跟 grant 的語法差不多,只需要把關(guān)鍵字 “to” 換成 “from” 即可:
八、MySQL grant、revoke 用戶權(quán)限注意事項(xiàng)
1. grant, revoke 用戶權(quán)限后,該用戶只有重新連接 MySQL 數(shù)據(jù)庫,權(quán)限才能生效。
2. 如果想讓授權(quán)的用戶,也可以將這些權(quán)限 grant 給其他用戶,需要選項(xiàng) “grant option“
這個(gè)特性一般用不到。實(shí)際中,數(shù)據(jù)庫權(quán)限最好由 DBA 來統(tǒng)一管理。
遇到 SELECT command denied to user '用戶名'@'主機(jī)名' for table '表名' 這種錯(cuò)誤,解決方法是需要把吧后面的表名授權(quán),即是要你授權(quán)核心數(shù)據(jù)庫也要。
我遇到的是SELECT command denied to user 'my'@'%' for table 'proc',是調(diào)用存儲(chǔ)過程的時(shí)候出現(xiàn),原以為只要把指定的數(shù)據(jù)庫授權(quán)就行了,什么存儲(chǔ)過程、函數(shù)等都不用再管了,誰知道也要把數(shù)據(jù)庫mysql的proc表授權(quán)
mysql授權(quán)表共有5個(gè)表:user、db、host、tables_priv和columns_priv。
授權(quán)表的內(nèi)容有如下用途:
user表
user表列出可以連接服務(wù)器的用戶及其口令,并且它指定他們有哪種全局(超級(jí)用戶)權(quán)限。在user表啟用的任何權(quán)限均是全局權(quán)限,并適用于所有數(shù)據(jù)庫。例如,如果你啟用了DELETE權(quán)限,在這里列出的用戶可以從任何表中刪除記錄,所以在你這樣做之前要認(rèn)真考慮。
db表
db表列出數(shù)據(jù)庫,而用戶有權(quán)限訪問它們。在這里指定的權(quán)限適用于一個(gè)數(shù)據(jù)庫中的所有表。
host表
host表與db表結(jié)合使用在一個(gè)較好層次上控制特定主機(jī)對(duì)數(shù)據(jù)庫的訪問權(quán)限,這可能比單獨(dú)使用db好些。這個(gè)表不受GRANT和REVOKE語句的影響,所以,你可能發(fā)覺你根本不是用它。
tables_priv表
tables_priv表指定表級(jí)權(quán)限,在這里指定的一個(gè)權(quán)限適用于一個(gè)表的所有列。
columns_priv表
columns_priv表指定列級(jí)權(quán)限。這里指定的權(quán)限適用于一個(gè)表的特定列。
新聞熱點(diǎn)
疑難解答
圖片精選