MySQL的 Grant命令許可權分配

2021-07-04 22:09:35 字數 3916 閱讀 1793

mysql 賦予使用者許可權命令的簡單格式可概括為:

grant 許可權 on 資料庫物件 to 使用者

一、grant 普通資料使用者,查詢、插入、更新、刪除 資料庫中所有表資料的權利。

grant select on testdb.* to common_user@』%』

grant insert on testdb.* to common_user@』%』

grant update on testdb.* to common_user@』%』

grant delete on testdb.* to common_user@』%』

或者,用一條 mysql 命令來替代:

grant select, insert, update, delete on testdb.* to common_user@』%』

二、grant 資料庫開發人員,建立表、索引、檢視、儲存過程、函式。。。等許可權。

grant 建立、修改、刪除 mysql 資料表結構許可權。

grant create on testdb.* to developer@』192.168.0.%』;

grant alter on testdb.* to developer@』192.168.0.%』;

grant drop on testdb.* to developer@』192.168.0.%』;

grant 操作 mysql 外來鍵許可權。

grant references on testdb.* to developer@』192.168.0.%』;

grant 操作 mysql 臨時表許可權。

grant create temporary tables on testdb.* to developer@』192.168.0.%』;

grant 操作 mysql 索引許可權。

grant index on testdb.* to developer@』192.168.0.%』;

grant 操作 mysql 檢視、檢視檢視源** 許可權。

grant create view on testdb.* to developer@』192.168.0.%』;

grant show view on testdb.* to developer@』192.168.0.%』;

grant 操作 mysql 儲存過程、函式 許可權。

grant create routine on testdb.* to developer@』192.168.0.%』; – now, can show procedure status

grant alter routine on testdb.* to developer@』192.168.0.%』; – now, you can drop a procedure

grant execute on testdb.* to developer@』192.168.0.%』;

三、grant 普通 dba 管理某個 mysql 資料庫的許可權。

grant all privileges on testdb to dba@』localhost』

其中,關鍵字 「privileges」 可以省略。

四、grant 高階 dba 管理 mysql 中所有資料庫的許可權。

grant all on . to dba@』localhost』

五、mysql grant 許可權,分別可以作用在多個層次上。

1. grant 作用在整個 mysql 伺服器上:

grant select on . to dba@localhost; – dba 可以查詢 mysql 中所有資料庫中的表。

grant all on . to dba@localhost; – dba 可以管理 mysql 中的所有資料庫

2. grant 作用在單個資料庫上:

grant select on testdb.* to dba@localhost; – dba 可以查詢 testdb 中的表。

3. grant 作用在單個資料表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

這裡在給乙個使用者授權多張表時,可以多次執行以上語句。例如:

grant select(user_id,username) on smp.users to mo_user@』%』 identified by 『123345』;

grant select on smp.mo_sms to mo_user@』%』 identified by 『123345』;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在儲存過程、函式上:

grant execute on procedure testdb.pr_add to 『dba』@』localhost』

grant execute on function testdb.fn_add to 『dba』@』localhost』

六、檢視 mysql 使用者許可權

檢視當前使用者(自己)許可權:

show grants;

檢視其他 mysql 使用者許可權:

show grants for dba@localhost;

七、撤銷已經賦予給 mysql 使用者許可權的許可權。

revoke 跟 grant 的語法差不多,只需要把關鍵字 「to」 換成 「from」 即可:

grant all on . to dba@localhost;

revoke all on . from dba@localhost;

八、mysql grant、revoke 使用者許可權注意事項

1. grant, revoke 使用者許可權後,該使用者只有重新連線 mysql 資料庫,許可權才能生效。

2. 如果想讓授權的使用者,也可以將這些許可權 grant 給其他使用者,需要選項 「grant option「

grant select on testdb.* to dba@localhost with grant option;

這個特性一般用不到。實際中,資料庫許可權最好由 dba 來統一管理。

遇到 select command denied to user 『使用者名稱』@』主機名』 for table 『表名』 這種錯誤,解決方法是需要把吧後面的表名授權,即是要你授權核心資料庫也要。

我遇到的是select command denied to user 『my』@』%』 for table 『proc』,是呼叫儲存過程的時候出現,原以為只要把指定的資料庫授權就行了,什麼儲存過程、函式等都不用再管了,誰知道也要把資料庫mysql的proc表授權

參考:mysql授權表共有5個表:user、db、host、tables_priv和columns_priv。

授權表的內容有如下用途:

user表

user表列出可以連線伺服器的使用者及其口令,並且它指定他們有哪種全域性(超級使用者)許可權。在user表啟用的任何許可權均是全域性許可權,並適用於所有資料庫。例如,如果你啟用了delete許可權,在這裡列出的使用者可以從任何表中刪除記錄,所以在你這樣做之前要認真考慮。

db表

db表列出資料庫,而使用者有許可權訪問它們。在這裡指定的許可權適用於乙個資料庫中的所有表。

host表

host表與db表結合使用在乙個較好層次上控制特定主機對資料庫的訪問許可權,這可能比單獨使用db好些。這個表不受grant和revoke語句的影響,所以,你可能發覺你根本不是用它。

tables_priv表

tables_priv表指定表級許可權,在這裡指定的乙個許可權適用於乙個表的所有列。

columns_priv表

columns_priv表指定列級許可權。這裡指定的許可權適用於乙個表的特定列。

mysql的grant許可權

通過命令 show privileges 可以檢視 grant 許可權 on 資料庫物件 to 使用者 grant select on testdb.to common user grant insert on testdb.to common user grant update on testdb...

my sql 賦許可權 grant

mysql grant 許可權1,許可權2,許可權n on 資料庫名稱.表名稱 to 使用者名稱 使用者位址 identified by 連線口令 許可權1,許可權2,許可權n代表select,insert,update,delete,create,drop,index,alter,grant,re...

MYSQL的GRANT命令詳解

本文例項,執行於 mysql 5.0 及以上版本。mysql 賦予使用者許可權命令的簡單格式可概括為 grant 許可權 on 資料庫物件 to使用者 一 grant 普通資料使用者,查詢 插入 更新 刪除 資料庫中所有表資料的權利。grant select ontestdb.to common u...