第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在PostgreSQL中創(chuàng)建一個(gè)只讀用戶?

如何在PostgreSQL中創(chuàng)建一個(gè)只讀用戶?

蕪湖不蕪 2019-12-07 13:40:22
我想在PostgreSQL中創(chuàng)建一個(gè)只能從特定數(shù)據(jù)庫(kù)執(zhí)行SELECT的用戶。在MySQL中,命令為:GRANT SELECT ON mydb.* TO 'xxx'@'%' IDENTIFIED BY 'yyy';PostgreSQL中的等效命令或一系列命令是什么?我試過(guò)了...postgres=# CREATE ROLE xxx LOGIN PASSWORD 'yyy';postgres=# GRANT SELECT ON DATABASE mydb TO xxx;但是看來(lái),您可以授予數(shù)據(jù)庫(kù)的唯一內(nèi)容是CREATE,CONNECT,TEMPORARY和TEMP。
查看完整描述

3 回答

?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

將使用情況/選擇授予單個(gè)表

如果僅將CONNECT授予數(shù)據(jù)庫(kù),則用戶可以連接,但沒(méi)有其他特權(quán)。您必須在名稱空間(方案)上授予USAGE,并在表和視圖上分別授予SELECT,如下所示:


GRANT CONNECT ON DATABASE mydb TO xxx;

-- This assumes you're actually connected to mydb..

GRANT USAGE ON SCHEMA public TO xxx;

GRANT SELECT ON mytable TO xxx;

多個(gè)表/視圖(PostgreSQL 9.0+)

在最新版本的PostgreSQL中,您可以使用單個(gè)命令授予對(duì)模式中所有表/視圖/等的權(quán)限,而不必一個(gè)個(gè)地鍵入它們:


GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;

這只會(huì)影響已經(jīng)創(chuàng)建的表。功能更強(qiáng)大的是,將來(lái)您可以自動(dòng)將默認(rèn)角色分配給新對(duì)象:


ALTER DEFAULT PRIVILEGES IN SCHEMA public

   GRANT SELECT ON TABLES TO xxx;

請(qǐng)注意,默認(rèn)情況下,這僅會(huì)影響發(fā)出此命令的用戶創(chuàng)建的對(duì)象(表):盡管也可以在發(fā)出用戶所屬的任何角色上進(jìn)行設(shè)置。但是,在創(chuàng)建新對(duì)象時(shí),您不會(huì)為您所隸屬的所有角色選擇默認(rèn)特權(quán)...因此仍然存在一些麻煩。如果采用數(shù)據(jù)庫(kù)具有所有者角色的方式,并且模式更改是作為該所有者角色執(zhí)行的,則應(yīng)為該所有者角色分配默認(rèn)特權(quán)。恕我直言,這有點(diǎn)令人困惑,您可能需要進(jìn)行實(shí)驗(yàn)以提出功能正常的工作流程。


多個(gè)表/視圖(9.0之前的PostgreSQL版本)

為了避免冗長(zhǎng)的多表更改中的錯(cuò)誤,建議使用以下“自動(dòng)”過(guò)程來(lái)生成GRANT SELECT每個(gè)表/視圖所需的內(nèi)容:


SELECT 'GRANT SELECT ON ' || relname || ' TO xxx;'

FROM pg_class JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace

WHERE nspname = 'public' AND relkind IN ('r', 'v', 'S');

這應(yīng)該將所有GRANT命令的相關(guān)GRANT命令公開輸出到所有表,視圖和序列上,以實(shí)現(xiàn)復(fù)制n粘貼。自然,這將僅應(yīng)用于已經(jīng)創(chuàng)建的表。


查看完整回答
反對(duì) 回復(fù) 2019-12-07
?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

請(qǐng)注意,PostgreSQL 9.0(今天處于beta測(cè)試中)將有一種簡(jiǎn)單的方法:


test=> GRANT SELECT ON ALL TABLES IN SCHEMA public TO joeuser;

GRANT


查看完整回答
反對(duì) 回復(fù) 2019-12-07
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

創(chuàng)建只讀用戶的腳本:


CREATE ROLE Read_Only_User WITH LOGIN PASSWORD 'Test1234' 

NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

為該只讀用戶分配權(quán)限:


GRANT CONNECT ON DATABASE YourDatabaseName TO Read_Only_User;

GRANT USAGE ON SCHEMA public TO Read_Only_User;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;


查看完整回答
反對(duì) 回復(fù) 2019-12-07
  • 3 回答
  • 0 關(guān)注
  • 1511 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)