MySQL資料庫許可權體系入門(3)---管理使用者許可權
2.2 授予許可權
前面提到了grant命令,grant的語法看起來可是相當複雜的吶:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
加粗的幾個子項說明如下:
l object_type:
TABLE
| FUNCTION
| PROCEDURE
l priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
l ssl_option:
SSL
| X509
| CIPHER 'cipher'
| ISSUER 'issuer'
| SUBJECT 'subject'
l with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS countpriv_type最簡單,但可選項最多,官方文件中專門列了個表很清晰:
許可權型別 |
簡要說明 |
ALL [PRIVILEGES] |
Grant all privileges at specified access level except GRANT OPTION |
ALTER |
Enable use of ALTER TABLE |
ALTER ROUTINE |
Enable stored routines to be altered or dropped |
CREATE |
Enable database and table creation |
CREATE ROUTINE |
Enable stored routine creation |
CREATE TEMPORARY TABLES |
Enable use of CREATE TEMPORARY TABLE |
CREATE USER |
Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES |
CREATE VIEW |
Enable views to be created or altered |
DELETE |
Enable use of DELETE |
DROP |
Enable databases, tables, and views to be dropped |
EVENT |
Enable use of events for the Event Scheduler |
EXECUTE |
Enable the user to execute stored routines |
FILE |
Enable the user to cause the server to read or write files |
GRANT OPTION |
Enable privileges to be granted to or removed from other accounts |
INDEX |
Enable indexes to be created or dropped |
INSERT |
Enable use of INSERT |
LOCK TABLES |
Enable use of LOCK TABLES on tables for which you have the SELECT privilege |
PROCESS |
Enable the user to see all processes with SHOW PROCESSLIST |
REFERENCES |
Not implemented |
RELOAD |
Enable use of FLUSH operations |
REPLICATION CLIENT |
Enable the user to ask where master or slave servers are |
REPLICATION SLAVE |
Enable replication slaves to read binary log events from the master |
SELECT |
Enable use of SELECT |
SHOW DATABASES |
Enable SHOW DATABASES to show all databases |
SHOW VIEW |
Enable use of SHOW CREATE VIEW |
SHUTDOWN |
Enable use of mysqladmin shutdown |
SUPER |
Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command |
TRIGGER |
Enable triggers to be created or dropped |
UPDATE |
Enable use of UPDATE |
USAGE |
Synonym for “no privileges |
括弧,許可權說明的英文語法很簡單,俺偷個懶,就不譯成中文的。
以上幾段加一塊基本上就是grant語句的語法,看起來呢是複雜了一點點,不過看不懂沒關係,再說就算看懂了也不一定記的住,就像現在人人都知道要先感謝國家,但是人人也都明白不過說說而已(不過百萬裸官在海外的親戚們說這話時應該是真心的),關鍵還是得動真格的,得會用才行,三思爭取後面多弄幾個例子,讓大傢伙都搞明白這個事兒。
提示:
不使用grant語句,而通過insert,update方式修改字典表也是靠譜的!重點說一下with_option的幾個選項:
- GRANT OPTION:允許使用者再將該許可權授予其它使用者;
- MAX_QUERIES_PER_HOUR:允許使用者每小時執行的查詢語句數量;
- MAX_UPDATES_PER_HOUR:允許使用者每小時執行的更新語句數量;
- MAX_CONNECTIONS_PER_HOUR:允許使用者每小時連線的次數;
- MAX_USER_CONNECTIONS:允許使用者同時連線伺服器的數量;
這塊的內容一看就是給使用者設限制使的,我個人認為意義不大,不過簡單瞭解一下也是有必要的,萬一哪天對某使用者看著不爽,DBA心裡應該明白,還是有法子限制該使用者能夠使用的資源的。
其它部分就先不多說了,何況這個事兒也不能說的太細,主要是太細的東西三思也不懂,不懂裝懂這個事兒俺臉皮雖然已經很厚,但做這類事兒的時候表情總是不夠自然,不過請童鞋們放心,俺一定會繼續努力,爭取早日成功複製那誰的成功,用俺的真誠蒙到別人,蒙到所有的人~~~
2.3 收回許可權
要收回使用者許可權,與之對應的命令是revoke,它的語法從定義上分為兩種:
- REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...
- REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
前者用來處理指定的許可權,後者去掉所有許可權。Revoke語法的子句定義與grant中同名子句定義一模一樣,這裡不再複述。
如果想確定使用者當前都擁有什麼許可權,可以使用show grants語句,例如,檢視使用者jss_grant@10.0.0.99都擁有哪些許可權,執行語句如下:
mysql> show grants for jss_grant@10.0.0.99;
+------------------------------------------------------------------------------------------------------------------+
| Grants for jss_grant@10.0.0.99 |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jss_grant'@'10.0.0.99' IDENTIFIED BY PASSWORD '*284578888014774CC4EF4C5C292F694CEDBB5457' |
| GRANT SELECT ON `mysql`.`user` TO 'jss_grant'@'10.0.0.99' |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)從上述返回的結果可以看到,使用者jss_grant@10.0.0.99擁有兩個許可權,查詢mysql.user表的查詢,以及登入MySQL資料庫的許可權。一般使用者只要建立,就會擁有usage on *.*的許可權,該許可權無法通過revoke語句收回,切記切記。
嘗試,收回jss_grant使用者對mysql.user的select許可權,操作如下:
mysql> revoke select on mysql.user from jss_grant@10.0.0.99;
Query OK, 0 rows affected (0.00 sec)2.4 刪除使用者
刪除使用者的語法非常簡單:
- DROP USER user [, user] ...
從語法上看與ORACLE有一點點不同,這個我感覺還是有必要提一下,比如ORACLE中的刪除使用者(或其它物件比如表空間),如果該使用者下有別的物件,那麼預設刪除操作會失敗,ORACLE提示需要先清理一下該使用者下的物件,如果強制刪除的話呢,它提供了一個CASCADE子句,附加該子句後就不再提示,即使存在關聯物件也將自動將其刪除。
MySQL的刪除使用者語法中就不存在CASCADE的子句,為什麼不存在呢,並不是MySQL對資料的保護不如ORACLE那麼上心,而是由於最重要的一條與ORACLE不同的機制決定,MySQL資料庫中的物件儲存並不是依賴於使用者,而是依賴於庫(db),使用者被刪除沒有任何關係,物件仍在,好好的儲存在其所儲存的資料庫中,因此,MySQL資料庫中的使用者刪了就刪了,如果外部應用不使用該使用者的話,那麼我們可以認為該使用者被刪除無影響。即使發現真的刪錯了,該使用者其實早就立志將一生奉獻給鐮刀斧頭幫,並且作風過硬,對party和國家無限忠誠,party讓咬誰就咬誰。想給它恢復身份的話也很簡單,這不就是組織上一句話的事兒嘛,只要重新向mysql.user表重新插入記錄(註冊建檔),並授予所需許可權即可(授予官階),至於底層資料的意見那是完全可以忽視的。
提示:
DROP USER不會自動中止已連線的使用者會話,也就是說被刪的使用者如果在刪前已經連線上了伺服器,並且沒有尚未中斷,那它此時還能繼續執行一定的操作,只是,它的身份已經變成了黑戶。=======================================
檢視之前的連載:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-675079/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [MySQL光速入門]031 許可權管理MySql
- 入門MySQL——使用者與許可權MySql
- MySQL入門--使用者與許可權MySql
- 授權|取消授權MYSQL資料庫使用者許可權MySql資料庫
- 許可權系統:一文搞懂功能許可權、資料許可權
- MySQL許可權管理MySql
- 資料庫的許可權管理資料庫
- mysql使用者許可權管理MySql
- PostgreSQL資料庫使用者許可權管理SQL資料庫
- Mysql資料庫許可權問題MySql資料庫
- 資料庫學習:許可權管理資料庫
- MySQL使用者及許可權管理MySql
- MySQL 使用者及許可權管理?MySql
- SpringSecurity許可權管理系統實戰—九、資料許可權的配置SpringGse
- mysql許可權MySql
- MongoDB入門系列(四):許可權管理MongoDB
- 關於mysql許可權管理MySql
- MySQL許可權管理實戰MySql
- MySQL資料庫Root許可權MOF方法提權研究MySql資料庫
- mysql 床架新資料庫並分配使用者許可權MySql資料庫
- Linux 許可權入門指南Linux
- Mysql許可權管理以及sql資料備份MySql
- 七、許可權管理和資料庫備份資料庫
- mysql 使用者及許可權管理 小結MySql
- MySQL-03.使用者管理和許可權管理MySql
- Odoo許可權管理Odoo
- 特殊許可權管理
- sql許可權管理SQL
- 許可權管理策略
- 4、許可權管理
- RBAC許可權管理
- PostgreSQL:許可權管理SQL
- 許可權之選單許可權
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- MYSQL學習筆記13: DCL許可權控制(使用者許可權操作)MySql筆記
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- [資料庫]MYSQL之授予/查驗binlog許可權資料庫MySql
- MySql查詢使用者許可權MySql
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由