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

Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解

 更新時間:2023年02月21日 11:51:21   作者:阿檸xn  
這篇文章主要為大家介紹了Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

角色

PG中使用角色(role)機(jī)制來解決用戶身份認(rèn)證。擁有登陸數(shù)據(jù)庫權(quán)限的角色稱之為可登錄角色(login role)。一個角色可以繼承其他角色的權(quán)限從而成為其成員角色;擁有成員角色的角色稱為組角色。(一個組角色可以是另一個組角色的成員角色,并且這種角色之間的繼承關(guān)系可以無限多層,但除非你非常有把握,否則別這么折騰自己)擁有登錄權(quán)限的組角色稱為可登錄的組角色。然而,基于安全性的考慮,管理員呢一般是不會給組角色登陸權(quán)限的。一個角色還可以被授權(quán)于超級用戶權(quán)限,但是此種授權(quán)要謹(jǐn)慎。

PG在最近的版本已經(jīng)不再使用“用戶”和“組”這兩個術(shù)語,別人可能還會用,你就記住,用戶代表可登錄角色,組代表組角色就好。當(dāng)然,PG為了保持前向兼容,create user和create group 這兩個命令在當(dāng)前版本中也是支持的,但與時俱進(jìn)嘛,最好不要使用他們,請使用create role。

創(chuàng)建可登錄角色

在PG安裝的過程中的數(shù)據(jù)初始化階段,系統(tǒng)是會默認(rèn)創(chuàng)建一個名為postgres的可登錄角色(同時會創(chuàng)建一個名為postgres的同名databases)。你可以通過前面文章介紹過的ident或者peer身份驗(yàn)證機(jī)制來將操作系統(tǒng)的root用戶映射到數(shù)據(jù)庫的postgres角色,這樣就可以實(shí)現(xiàn)root用戶免密登陸,當(dāng)然或者通過設(shè)置trust模式的效果也是一樣。數(shù)據(jù)庫安裝完成的第一件事就是用psql或者pgadmin工具以postgres角色身份登陸,然后創(chuàng)建其他已經(jīng)規(guī)劃好的角色。

??創(chuàng)建具備登陸權(quán)限的角色

CREATE ROLE leo LOGIN PASSWORD 'mimajiushiwo'  VALID UNTIL  'infinity'  CREATEDB;

VALID子句是可選的,其功能是為此角色的權(quán)限設(shè)定的有效期,如果不寫則該角色永久有效,CREATEDB 子句表明為此角色賦予了創(chuàng)建新數(shù)據(jù)庫的權(quán)限。

??創(chuàng)建具備超級用戶權(quán)限的角色

CREATE ROLE regina LOGIN PASSWORD 'queen' VALID UNTIL '2023-2-17 00:00' SUPERUSER;

上面的兩個例子中我們創(chuàng)建的都是可登錄的角色,如果創(chuàng)建不可登錄的角色,省略掉LOGIN PASSWORD 子句既可。

創(chuàng)建組角色

一般是不應(yīng)該授予組角色登錄權(quán)限,但是你想,也不是不可以。

??以下的SQL創(chuàng)建組角色

CREATE ROLE zujuese INHERIT;

注意這個關(guān)鍵詞INHERIT的用法。他表示組角色zujuese的任何一個成員角色都將自動繼承其除“超級用戶權(quán)限”外的所有權(quán)限。如果不寫

INHERIT,默認(rèn)也會有INHERIT的效果。

如果希望禁止組角色將其權(quán)限授予成員角色,加上NOINHERIT關(guān)鍵字。

??以下語句可以為組角色添加成員角色

GRANT zujuese TO leo;
GRANT zujuese TO regina;

我們之前提到過SUPERUSER超級用戶權(quán)限是沒有辦法被繼承的,然而成員角色卻可以通過SET ROLE命令來實(shí)現(xiàn)“冒名頂替”其組角色的身份,從而獲得其父角色所擁有的SUPERUSER權(quán)限,當(dāng)然這種冒名頂替的狀態(tài)是有期限的,僅限于當(dāng)前會話存續(xù)期間有效。

舉例如下:

我們呢先給zujuese超級用戶權(quán)限:

ALTER ROLE zujuese SUPERUSER;

上面這個leo是zujuese的成員角色,也繼承了絕大多數(shù)的權(quán)限,但leo登陸后依然不具備SUPERUSER權(quán)限。但是呢,我們只要執(zhí)行以下語句就可以獲得SUPERUSER權(quán)限:

SET ROLE zujuese;

我在下面才想明白這個問題:這個口令的意思是,leo扮演了zujuse在這個角色,雖然leo是zujuese的成員角色,但是superuser這個權(quán)限是沒有被通過默認(rèn)的賦權(quán)方式賦予的,此時set role一執(zhí)行,就表示leo現(xiàn)在扮演了zujuese,所以才有了superuser權(quán)限

但是這種方式獲得的SUPERUSER權(quán)限僅僅在會話存續(xù)期間有效。

雖然這個操作邏輯看起來好像很傻很呆 ,但是如果你不希望登錄到以superuser身份犯下一些無法挽回的錯誤,那么這個方法是值得你考慮的。

所有的用戶都可以使用SET ROLE這個命令,但是還有一個比它更加強(qiáng)大的命令:SET SESSION AUTHORIZATION ,該命令只允許具備superuser權(quán)限的用戶執(zhí)行。為了便于理解呢,我們先介紹兩個postgresql中的全局變量:current_user和session_user。執(zhí)行下面的語句,我們就可以看到在這兩個變量值。

SELECT session_user ,current_user;

首次登陸后,這兩個值相同。執(zhí)行set role就會修改current_user的值,要是執(zhí)行SET SESSION AUTHORIZATION 就會同時改變current_user和session_user的值。

以下是set role命令的主要特點(diǎn)。

  • set role無須superuser 權(quán)限既可執(zhí)行。
  • set role會修改current_user變量的值,但不會修改session_user的值。
  • 一個具備superuser權(quán)限的session_user同名角色可以通過set role設(shè)置為任何用戶。
  • 非超級用戶可以通過set role 設(shè)置為session_user同名角色或者其所屬的組用戶。
  • set role命令可以讓執(zhí)行角色獲取到所“扮演”角色的全部權(quán)限,當(dāng)然除了,set role 和SET SESSION AUTHORIZATION權(quán)限。

SET SESSION AUTHORIZATION是比set role 更為強(qiáng)大的命令,其關(guān)鍵特性如下:

  • 只有超級用戶才可以執(zhí)行SET SESSION AUTHORIZATION
  • SET SESSION AUTHORIZATION在整個會話存續(xù)期間都是有效的,也就是說及時超級用戶通過SET SESSION AUTHORIZATION來扮演了一個非超級用戶,只要會話未中斷,都可以在上面再次執(zhí)行SET SESSION AUTHORIZATION命令的。
  • SET SESSION AUTHORIZATION會將current_user和session_user修改為要扮演的角色。
  • 具備超級用戶權(quán)限的session_user同名角色可以通過set role 來扮演任何其他角色。

下面呢,我們就展示一波:

??

psql -U leo -d postgres
SELECT session_user ,current_user;

 set role zujuese; 
SELECT session_user ,current_user;

alter role leo superuser;
set role regina ;
SELECT session_user ,current_user;

set session authorization regina;

為啥這個不成功呢,這就是我們上面說的set role的特點(diǎn),是有了全部權(quán)限,但是set role和set session authorization權(quán)限是沒有的。

所以我們退出后,再用leo登陸:

這說明什么呢,這說明我們上次扮演的時候給我們賦予的superuser權(quán)限是會話結(jié)束還是生效的

所以我們這波set session authorization直接就是成功了。

以上就是Postgresql數(shù)據(jù)庫角色創(chuàng)建登錄詳解的詳細(xì)內(nèi)容,更多關(guān)于Postgresql角色創(chuàng)建登錄的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PostgreSQL使用MySQL作為外部表(mysql_fdw)

    PostgreSQL使用MySQL作為外部表(mysql_fdw)

    PostgreSQL 提供了一種訪問和操作外部數(shù)據(jù)源的機(jī)制,稱為外部數(shù)據(jù)包裝器,本文主要給大家介紹了PostgreSQL使用MySQL作為外部表的方法,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Postgresql 截取字符串的案例

    Postgresql 截取字符串的案例

    這篇文章主要介紹了Postgresql 截取字符串的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 免密使用PostgreSQL數(shù)據(jù)庫內(nèi)置工具的兩種方法

    免密使用PostgreSQL數(shù)據(jù)庫內(nèi)置工具的兩種方法

    我們在PostgreSQL數(shù)據(jù)庫自帶的各種工具時,每次使用都要輸入數(shù)據(jù)庫密碼,這里我們通過配置的方式,以后再使用這些工具就不需要輸入數(shù)據(jù)庫密碼了,需要的朋友可以參考下
    2025-03-03
  • PostgreSQL 存儲過程的進(jìn)階講解(含游標(biāo)、錯誤處理、自定義函數(shù)、事務(wù))

    PostgreSQL 存儲過程的進(jìn)階講解(含游標(biāo)、錯誤處理、自定義函數(shù)、事務(wù))

    PL/pgSQL 游標(biāo)允許我們封裝一個查詢,然后每次處理結(jié)果集中的一條記錄,這篇文章主要介紹了PostgreSQL 存儲過程的進(jìn)階介紹(含游標(biāo)、錯誤處理、自定義函數(shù)、事務(wù)),需要的朋友可以參考下
    2023-03-03
  • postgresql之greenplum字符串去重拼接方式

    postgresql之greenplum字符串去重拼接方式

    這篇文章主要介紹了postgresql之greenplum字符串去重拼接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • PostgreSQL數(shù)據(jù)庫字符串拼接、大小寫轉(zhuǎn)換以及substring詳解

    PostgreSQL數(shù)據(jù)庫字符串拼接、大小寫轉(zhuǎn)換以及substring詳解

    在日常工作中會遇到將多行的值拼接為一個值展現(xiàn),下面這篇文章主要給大家介紹了關(guān)于PostgreSQL數(shù)據(jù)庫字符串拼接、大小寫轉(zhuǎn)換以及substring的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 史上最全PostgreSQL?DBA最常用SQL

    史上最全PostgreSQL?DBA最常用SQL

    這篇文章主要介紹了PostgreSQL?DBA最常用SQL?,主要包括背景及常用查詢語句,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • postgreSQL 非count方法算記錄數(shù)操作

    postgreSQL 非count方法算記錄數(shù)操作

    這篇文章主要介紹了postgreSQL 非count方法算記錄數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL圖(graph)的遞歸查詢實(shí)例

    PostgreSQL圖(graph)的遞歸查詢實(shí)例

    這篇文章主要給大家介紹了關(guān)于PostgreSQL圖(graph)的遞歸查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用PostgreSQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)透視表的三種方法

    詳解PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)透視表的三種方法

    數(shù)據(jù)透視表(Pivot Table)是進(jìn)行數(shù)據(jù)匯總、分析、瀏覽和展示的強(qiáng)大工具,可以幫助我們了解數(shù)據(jù)中的對比情況、模式和趨勢,是數(shù)據(jù)分析師和運(yùn)營人員必備技能之一,本給大家介紹PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)透視表的三種方法,需要的朋友可以參考下
    2024-04-04

最新評論

墨竹工卡县| 成安县| 洛阳市| 宜宾市| 崇阳县| 关岭| 龙游县| 奈曼旗| 安徽省| 井冈山市| 江门市| 铜梁县| 郓城县| 瑞安市| 淮南市| 灵武市| 大关县| 江门市| 赤峰市| 石渠县| 盖州市| 江城| 巴南区| 武平县| 阳城县| 岑巩县| 枝江市| 彭水| 江安县| 太保市| 龙门县| 离岛区| 环江| 民勤县| 伊川县| 岳西县| 贵州省| 盘山县| 武陟县| 泽州县| 盱眙县|