最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL USAGE和SELECT權(quán)限案例深入分析

 更新時間:2023年04月12日 11:17:04   作者:ziop-三月  
這篇文章主要介紹了PostgreSQL USAGE和SELECT權(quán)限案例深入分析,因為項目需求,需要學(xué)習(xí)PostgreSQL,本人之前學(xué)習(xí)過MYSQL,臨時快速上手,盡快的去學(xué)習(xí)項目需要PostgREST

起因

因為項目需求,需要學(xué)習(xí)PostgreSQL,本人之前學(xué)習(xí)過MYSQL,臨時快速上手,盡快的去學(xué)習(xí)項目需要PostgREST, 在學(xué)習(xí)PostgREST的第一個起步案例 教程 0 - 讓它運行起來 的時候碰到了下面幾條語句:

CREATE ROLE web_anon NOLOGIN;
GRANT USAGE ON SCHEMA api TO web_anon;
GRANT SELECT ON api.todos TO web_anon;

因為不太懂PostgSQL,就行了了研究,研究結(jié)果如下:

第一個語句:

CREATE ROLE web_anon NOLOGIN;

這條命令創(chuàng)建了一個名為 web_anon 的新角色,并通過使用 NOLOGIN 選項指定該角色不能直接登錄到數(shù)據(jù)庫。通常,這是為了給不需要直接訪問數(shù)據(jù)庫的應(yīng)用或服務(wù)授予權(quán)限。

第二個和第三個語句:

GRANT USAGE ON SCHEMA api TO web_anon;
GRANT SELECT ON api.todos TO web_anon;

這兩條命令分別將對 schema api 的使用權(quán)(USAGE)和對表 api.todos 的查看權(quán)(SELECT)授予 web_anon 角色。這意味著任何具有 web_anon 角色的用戶或連接將能夠查詢 api.todos 表中的數(shù)據(jù)。

分析

如果不給USAGE,只給SELECT 會有什么效果
如果只授予角色(例如 web_anon)對表(如 api.todos)的 SELECT 權(quán)限但沒有授予 SCHEMA(如 api)的 USAGE 權(quán)限,那么該角色將只能查詢與授權(quán)的表相關(guān)的數(shù)據(jù)。

在這種情況下,web_anon 角色將仍然能夠執(zhí)行 SELECT 查詢訪問 api.todos 表中的數(shù)據(jù),因為你已經(jīng)授予了該角色針對該表的 SELECT 權(quán)限。然而,如果 schema api 包含其他對象(如數(shù)據(jù)類型、操作符、函數(shù)等),web_anon 角色將無法使用這些對象,因為沒有授予 SCHEMA 的 USAGE 權(quán)限。

簡而言之,沒有 SCHEMA 的 USAGE 權(quán)限,角色將無法使用此 SCHEMA 中的其他數(shù)據(jù)庫對象,但仍然可以運行 SELECT 查詢以訪問已授權(quán)表中的數(shù)據(jù)。需要注意的是,這可能會導(dǎo)致某些查詢和操作失敗,特別是當(dāng)查詢涉及到 SCHEMA 中其他對象時。

授權(quán)USAGE之后,還需要授權(quán)select 嗎? 如果不授權(quán)select能進行查詢數(shù)據(jù)嗎?
即使已經(jīng)授予角色 SCHEMA 的 USAGE 權(quán)限,你仍然需要為某個表(例如:api.todos)單獨授權(quán) SELECT 權(quán)限。USAGE 權(quán)限只讓角色能夠訪問 SCHEMA 中的數(shù)據(jù)類型、操作符、函數(shù)等其他數(shù)據(jù)庫對象,但是不包含對 SCHEMA 中的表的訪問權(quán)。

如果沒有為表(例如:api.todos)授權(quán) SELECT 權(quán)限,即使已授權(quán) SCHEMA 的 USAGE 權(quán)限,角色仍然無法讀取該表中的數(shù)據(jù)。為了允許一個角色執(zhí)行 SELECT 查詢并獲取某個表中的數(shù)據(jù),你需要為該角色分別授權(quán) SCHEMA 的 USAGE 權(quán)限和表的 SELECT 權(quán)限。

只有USAGE沒有SELECT的例子
為了更好地理解只有 SCHEMA 的 USAGE 權(quán)限的情況,我們首先需要了解 PostgreSQL schema。一個 schema 是一個命名空間,它可以包含多個數(shù)據(jù)庫對象,如表、視圖、數(shù)據(jù)類型、函數(shù)等。在這個例子中,假設(shè)我們有一個名為 api 的 schema 和一個名為 api.todos 的表。我們還有一個自定義數(shù)據(jù)類型和一個函數(shù)。

創(chuàng)建自定義數(shù)據(jù)類型:

CREATE TYPE api.priority_level AS ENUM ('Low', 'Medium', 'High');

創(chuàng)建一個使用自定義數(shù)據(jù)類型的表:

CREATE TABLE api.todos_with_priority (
    id SERIAL PRIMARY KEY,
    task VARCHAR(255) NOT NULL,
    priority api.priority_level NOT NULL
);

創(chuàng)建一個使用自定義數(shù)據(jù)類型的函數(shù):

CREATE FUNCTION api.get_priority_as_text(p api.priority_level) RETURNS text
    LANGUAGE sql
    AS $$ SELECT 'Priority: ' || p::text; $$;

如果我們創(chuàng)建一個名為 web_anon 的角色并僅授權(quán) SCHEMA 的 USAGE 權(quán)限:

CREATE ROLE web_anon NOLOGIN;
GRANT USAGE ON SCHEMA api TO web_anon;

在這種情況下,web_anon 角色將可以使用 api schema 中的自定義數(shù)據(jù)類型(例如 api.priority_level)以及自定義函數(shù)(例如 api.get_priority_as_text),但由于缺少 SELECT 權(quán)限,它無法查詢 api.todos_with_priority 表。

如果將 web_anon 角色分配給另一個用戶或角色并嘗試執(zhí)行以下查詢:

SELECT id, task, api.get_priority_as_text(priority)
FROM api.todos_with_priority;

這個查詢將失敗,因為沒有授予 SELECT 權(quán)限。

為了讓 web_anon 角色能查詢 api.todos_with_priority 表,我們需要給它授予對該表的 SELECT 權(quán)限:

GRANT SELECT ON api.todos_with_priority TO web_anon;

總結(jié)

本文主要討論了 PostgreSQL 中角色權(quán)限的授予及其影響。CREATE ROLE 命令用于創(chuàng)建一個新的角色,同時可以通過 NOLOGIN 選項指定角色無法直接登錄到數(shù)據(jù)庫。通過 GRANT 命令可以為角色授予權(quán)限,如 SCHEMA 的 USAGE 權(quán)限和對表的 SELECT 權(quán)限。

在授權(quán)過程中,注意區(qū)分 SCHEMA 的 USAGE 權(quán)限和表的 SELECT 權(quán)限。授予角色 SCHEMA 的 USAGE 權(quán)限意味著角色可以訪問 SCHEMA 中的其他數(shù)據(jù)庫對象(例如數(shù)據(jù)類型、操作符和函數(shù)等)。而為角色授予對表的 SELECT 權(quán)限,則允許角色查詢該表的數(shù)據(jù)。

總之,在 PostgreSQL 中設(shè)置權(quán)限時,需要根據(jù)具體情況為角色分別授予 SCHEMA 的 USAGE 權(quán)限和表的 SELECT 權(quán)限,以確保正確的訪問能力。僅具有 SCHEMA 的 USAGE 權(quán)限將無法訪問表的數(shù)據(jù),需要額外為表授予 SELECT 權(quán)限。

到此這篇關(guān)于PostgreSQL USAGE和SELECT權(quán)限案例深入分析的文章就介紹到這了,更多相關(guān)PostgreSQL USAGE和SELECT內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    大家好,本篇文章主要講的是mysql中整數(shù)數(shù)據(jù)類型tinyint詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • SQL實現(xiàn)LeetCode(184.系里最高薪水)

    SQL實現(xiàn)LeetCode(184.系里最高薪水)

    這篇文章主要介紹了SQL實現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼

    MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼

    這篇文章主要介紹了MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼,文中給大家提到了MySQL創(chuàng)建表時字符串的默認(rèn)值,本文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 在Docker中使用MySQL的教程

    在Docker中使用MySQL的教程

    這篇文章主要介紹了在Docker中使用MySQL的教程,介紹了簡單的內(nèi)部搭建步驟,需要的朋友可以參考下
    2015-04-04
  • 分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解

    分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解

    今天小編就為大家分享一篇關(guān)于分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL 8.0統(tǒng)計信息不準(zhǔn)確的原因

    MySQL 8.0統(tǒng)計信息不準(zhǔn)確的原因

    這篇文章主要介紹了MySQL 8.0統(tǒng)計信息不準(zhǔn)確的原因,幫助大家更好的理解和學(xué)習(xí)MySQL8.0的相關(guān)內(nèi)容,感興趣的朋友可以了解下
    2020-08-08
  • 關(guān)于SQL?Update的四種常見寫法

    關(guān)于SQL?Update的四種常見寫法

    這篇文章主要介紹了關(guān)于SQL?Update的四種常見寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • ktl工具實現(xiàn)mysql向mysql同步數(shù)據(jù)方法

    ktl工具實現(xiàn)mysql向mysql同步數(shù)據(jù)方法

    在本篇內(nèi)容里我們給大家介紹了用ktl工具實現(xiàn)mysql向mysql同步數(shù)據(jù)的具體步驟,有需要的朋友們跟著學(xué)習(xí)參考下。
    2019-03-03
  • MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論

    MySQL事務(wù)與隔離級別的使用基礎(chǔ)理論

    這篇文章主要介紹了MySQL事務(wù)的隔離級別詳情,事務(wù)隔離級別越高,為避免沖突所花費的性能也就越多,即效率低。在“可重復(fù)讀”級別,實際上可以解決部分的虛讀問題,但是不能防止update更新產(chǎn)生的虛讀問題,要禁止虛讀產(chǎn)生,還是需要設(shè)置串行化隔離級別
    2023-02-02
  • 刪除MySQL重復(fù)數(shù)據(jù)的方法

    刪除MySQL重復(fù)數(shù)據(jù)的方法

    這篇文章主要介紹了刪除MySQL重復(fù)數(shù)據(jù)的方法,通過建立中間表實現(xiàn)針對冗余數(shù)據(jù)的刪除功能,非常具有實用價值,需要的朋友可以參考下
    2014-12-12

最新評論

永清县| 青龙| 岳普湖县| 缙云县| 达拉特旗| 遂溪县| 大英县| 会泽县| 剑阁县| 会同县| 南和县| 维西| 石渠县| 江城| 资中县| 紫金县| 台中县| 鄂伦春自治旗| 安顺市| 城市| 定安县| 门头沟区| 辽中县| 英德市| 镇远县| 赫章县| 古交市| 德阳市| 连山| 嫩江县| 当阳市| 灵川县| 山东| 库车县| 甘德县| 桐乡市| 京山县| 锡林浩特市| 堆龙德庆县| 普洱| 卫辉市|