久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何深入學(xué)習(xí)MySQL授權(quán)表

共計(jì) 3532 個(gè)字符,預(yù)計(jì)需要花費(fèi) 9 分鐘才能閱讀完成。

如何深入學(xué)習(xí) MySQL 授權(quán)表,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

我們將向讀者詳細(xì)介紹 MySQL 的授權(quán)表,并通過(guò)一些實(shí)例來(lái)講解 MySQL 是如何提高這些授權(quán)表來(lái)實(shí)現(xiàn)用戶訪問(wèn)控制的。我們首先介紹 MySQL 訪問(wèn)控制過(guò)程,然后說(shuō)明 tables_priv 和 columns_priv 授權(quán)表,我們會(huì)給出與 MySQL 的 tables_priv 表有關(guān)的解釋和范例。最后,我們介紹 columns_priv 授權(quán)表及其范例。

一、MySQL 授權(quán)表概述

MySQL 服務(wù)器的特點(diǎn)之一是,它在控制每個(gè)用戶行為方面提供了極大的靈活性。例如,我們既可以限制用戶訪問(wèn)整個(gè)數(shù)據(jù)庫(kù),也可以限制用戶訪問(wèn)數(shù)據(jù)庫(kù)中特定的表,或者禁止訪問(wèn)特定表中的特定列。由此看出 MySQL 服務(wù)器在用戶授權(quán)方面的靈活性。本文將向大家詳細(xì)介紹 MySQL 服務(wù)器是如何處理用戶權(quán)限的授與 / 撤回的,尤其是 MySQL 的授權(quán)表 tables_priv 和 columns_priv。

MySQL 的授權(quán)系統(tǒng)通常是通過(guò) MySQL 數(shù)據(jù)庫(kù)中的五個(gè)表來(lái)實(shí)現(xiàn)的,這些表有 user、db、host、tables_priv 和 columns_priv。這些表的用途各有不同,但是有一點(diǎn)是一致的,那就是都能夠檢驗(yàn)用戶要做的事情是否為被允許的。每個(gè)表的字段都可分解為兩類,一類為作用域字段,一類為權(quán)限字段。作用域字段用來(lái)標(biāo)識(shí)主機(jī)、用戶或者數(shù)據(jù)庫(kù); 而權(quán)限字段則用來(lái)確定對(duì)于給定主機(jī)、用戶或者數(shù)據(jù)庫(kù)來(lái)說(shuō),哪些動(dòng)作是允許的。下面,我們對(duì)這些表的作用做簡(jiǎn)單介紹:

user 表——該表決定是否允許用戶連接到服務(wù)器。如果允許連接,權(quán)限字段則為該用戶的全局權(quán)限。

db 表——用于決定哪些用戶可以從哪些主機(jī)訪問(wèn)哪些數(shù)據(jù)庫(kù)。包含在 db 表中的權(quán)限適用于這個(gè)表標(biāo)識(shí)的數(shù)據(jù)庫(kù)。

host 表——當(dāng)您想在 db 表的范圍之內(nèi)擴(kuò)展一個(gè)條目時(shí),就會(huì)用到這個(gè)表。舉例來(lái)說(shuō),如果某個(gè) db 允許通過(guò)多個(gè)主機(jī)訪問(wèn)的話,那么超級(jí)用戶就可以讓 db 表內(nèi)將 host 列為空,然后用必要的主機(jī)名填充 host 表。

tables_priv 表——該表與 db 表相似,不同之處是它用于表而不是數(shù)據(jù)庫(kù)。這個(gè)表還包含一個(gè)其他字段類型,包括 timestamp 和 grantor 兩個(gè)字段,用于存儲(chǔ)時(shí)間戳和授權(quán)方。在本文后面我們會(huì)對(duì)這個(gè)表做進(jìn)一步的講解。

columns_priv——該表作用幾乎與 db 和 tables_priv 表一樣,不同之處是它提供的是針對(duì)某些表的特定列的權(quán)限。這個(gè)表也多出了一個(gè)字段類型,即其他字段,包括了一個(gè) timestamp 列,用于存放時(shí)間戳。在本文后面部分,我們還會(huì)對(duì) columns_priv 表做進(jìn)一步的說(shuō)明。

下面,我們通過(guò)如下幾個(gè)方面對(duì) MySQL 用戶授權(quán)過(guò)程加以介紹:首先介紹 MySQL 訪問(wèn)控制過(guò)程,解答 MySQL 授權(quán)表是如何工作的; 然后,我們介紹 tables_priv 和 columns_priv 授權(quán)表,我們會(huì)給出與 MySQL 的 tables_priv 表有關(guān)的解釋和范例。最后,我們介紹與 columns_priv 授權(quán)表有關(guān)的解釋和若干范例。

二、MySQL 服務(wù)器的訪問(wèn)控制

現(xiàn)在讓我們來(lái)看看 MySQL 服務(wù)器是如何通過(guò)用戶特權(quán)來(lái)控制用戶訪問(wèn)的。雖然這乍聽(tīng)起來(lái)好像挺嚇人的,但是通過(guò)一個(gè)例子的演示,您就會(huì)發(fā)現(xiàn)其實(shí)事情沒(méi)有我們想象的那么難以理解。

首先,對(duì)用戶的訪問(wèn)進(jìn)行控制的時(shí)候,系統(tǒng)需要查看作為過(guò)濾器的一些授權(quán)表,這些表的使用過(guò)程是從一般到特殊,這些表包括:

User 表

Db 表

Host 表

Tables_priv 表

Columns_priv 表

此外,一旦連接到了服務(wù)器,一個(gè)用戶可以使用兩種類型的請(qǐng)求:

管理請(qǐng)求 (shutdown,reload,等)

數(shù)據(jù)庫(kù)相關(guān)的請(qǐng)求 (insert,delete,等)

當(dāng)用戶提交管理請(qǐng)求時(shí),服務(wù)器只需查看 user 表,這是因?yàn)?user 表是唯一包含與管理工作有關(guān)的權(quán)限的一個(gè)表。然而,當(dāng)用戶提交數(shù)據(jù)庫(kù)請(qǐng)求時(shí),要查看的表就要更多了。

您可能已經(jīng)注意到了,這些授權(quán)表的內(nèi)容好像有些重復(fù),例如 user 表中有 select 權(quán)限,同時(shí) host 和 user 表中也有同樣的權(quán)限。但是,這樣做自有其道理。我們可以考慮一下 user 表中全局性的與數(shù)據(jù)庫(kù)相關(guān)的權(quán)限,也就是說(shuō),在這個(gè)表中授予用戶的權(quán)限對(duì)服務(wù)器上的所有數(shù)據(jù)庫(kù)都有效。這些權(quán)限可以被認(rèn)為是超級(jí)用戶權(quán)限。相反,包含在 host 和 db 表之內(nèi)的與數(shù)據(jù)庫(kù)相關(guān)的權(quán)限則是特定于主機(jī)或者數(shù)據(jù)庫(kù)的。因此,讓這個(gè)表內(nèi)所有的權(quán)限保持為“N”不失為一個(gè)明智的選擇。

讓我們假定我們的 user 和 db 表如下所示:

下面簡(jiǎn)要介紹各字段的含義:

Host——適用于那些主機(jī)?

Db——適用于從上面的主機(jī)所連接的哪些數(shù)據(jù)庫(kù)?

User——適用于來(lái)自上述主機(jī)的哪些用戶?

Table_name——適用于上述數(shù)據(jù)庫(kù)中的哪些表?

Table_priv——為這個(gè)表賦予哪些權(quán)限?

Column_priv——為這個(gè)表中的個(gè)字段賦予哪些權(quán)限?

Timestamp——這個(gè)權(quán)限是何時(shí)賦予的?

Grantor——誰(shuí)授與該用戶的這個(gè)權(quán)限?

要想真正弄懂 tables_priv 表,最好的辦法就是通過(guò)實(shí)例進(jìn)行學(xué)習(xí),下面我們就給出一些例子。

例 1:

% GRANTSELECTON italy TO wj@314interactive.com;

這條命令的作用是什么? 以上命令允許來(lái)自主機(jī) 314interactive.com 的用戶 wj 在表 italy 上至下一個(gè) SELECT 語(yǔ)句。請(qǐng)記住,只有當(dāng)給定數(shù)據(jù)庫(kù) / 主機(jī)和用戶名對(duì)應(yīng)的 db 或者 host 表中的 SELECT 字段的值為 N 時(shí),才需要訪問(wèn)這個(gè)表。如果給定數(shù)據(jù)庫(kù) / 主機(jī)和用戶名對(duì)應(yīng)的 db 或者 host 表中的 SELECT 字段中有一個(gè)值為 Y 的話,那么就無(wú)需控制該 tables_priv 表。

例 2:

% GRANTSELECT, INSERTON oats.italy TO wj@314interactive.com;

這條命令的作用是什么? 以上命令允許來(lái)自主機(jī) 314interactive.com 的用戶 wj 對(duì)數(shù)據(jù)庫(kù) oats 中的數(shù)據(jù)表 italy 執(zhí)行 SELECT 和 INSERT 語(yǔ)句。

例 3:

% REVOKESELECTon oats.italy from wj@314interactive.com

這條命令的作用是什么? 以上命令撤消來(lái)自主機(jī) 314interactive.com 的用戶 wj 對(duì)數(shù)據(jù)庫(kù) oats 中的表 italy 的執(zhí)行 SELECT 的權(quán)限。

重要的是要認(rèn)識(shí)到,包含在 tables_priv 中的信息僅當(dāng) host/db 表不允許用戶執(zhí)行要求的功能所需的權(quán)限時(shí)才生效。如果給定的權(quán)限在 host/db 表中為 Y,那么就無(wú)需考察 tables_priv 表。

例 4:

% GRANTSELECT(id,name,address,phone),update(address,phone) ON
company.customers TO gilmore@314interactive.com;

這條命令的作用是什么? 以上命令將授予對(duì) company 數(shù)據(jù)庫(kù)中 customers 表內(nèi) id、name、address 和 phone 字段執(zhí)行 SELECT 的權(quán)限,以及對(duì) address 和 phone 字段執(zhí)行 UPDATE 的權(quán)限。

這將帶來(lái)哪些影響? 這條命令會(huì)修改 tables_priv 表和 columns_priv 表,這是因?yàn)樗眠@兩個(gè)表和表內(nèi)特定的字段。

例 5:

% REVOKEUPDATE(address,phone) ON company.customers FROM gilmore@314interactive.com;

這條命令的作用是什么? 這個(gè)命令將撤消對(duì) company 數(shù)據(jù)庫(kù)中 customers 表內(nèi)的 address 和 phone 字段執(zhí)行 UPDATE 操作的權(quán)限。

這將帶來(lái)哪些影響? 因?yàn)樵撁钪苯由婕敖o定表中的某些字段,所以 columns_priv 表以及 tables_priv 表也會(huì)更新。

前面說(shuō)過(guò),只有在必須的情況下才會(huì)使用授權(quán)表,舉例來(lái)說(shuō),如果高優(yōu)先級(jí)的表提供了適當(dāng)?shù)臋?quán)限的話,那么就無(wú)需查閱優(yōu)先級(jí)較低的授權(quán)表了。如果高優(yōu)先級(jí)的表中對(duì)應(yīng)命令的值為 N,那么就需要進(jìn)一步查看低優(yōu)先級(jí)的授權(quán)表。

無(wú)論是那種級(jí)別的權(quán)限,只要有一個(gè)級(jí)別允許了,訪問(wèn)就能成功,這樣是合理的,比如說(shuō)我只想讓一個(gè)用戶訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)中的一個(gè)表,那么在全局和數(shù)據(jù)庫(kù)級(jí)訪問(wèn)權(quán)限肯定是 N, 只有在表級(jí)是 Y。如果一個(gè)用戶在全局是 Y,那么不管他在數(shù)據(jù)庫(kù)級(jí)和表級(jí)是不是 Y,他都會(huì)訪問(wèn)成功。因?yàn)橹灰谌烛?yàn)證了 Y,MYSQL 就不再數(shù)據(jù)庫(kù)級(jí)和表級(jí)進(jìn)行驗(yàn)證。

關(guān)于如何深入學(xué)習(xí) MySQL 授權(quán)表問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注丸趣 TV 行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-19發(fā)表,共計(jì)3532字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 海南省| 岳阳市| 汕头市| 政和县| 静宁县| 鄂尔多斯市| 大理市| 安平县| 中卫市| 河曲县| 增城市| 安阳县| 天门市| 合江县| 安图县| 香格里拉县| 平潭县| 林西县| 涞水县| 香格里拉县| 江川县| 丹凤县| 虎林市| 和林格尔县| 松桃| 红安县| 涿鹿县| 兴宁市| 正定县| 岱山县| 三明市| 乐安县| 阳东县| 朝阳市| 嘉禾县| 厦门市| 客服| 潞城市| 秦安县| 磐安县| 宿松县|