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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

3 回答

?
長風(fēng)秋雁

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

將使用情況/選擇授予單個表

如果僅將CONNECT授予數(shù)據(jù)庫,則用戶可以連接,但沒有其他特權(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;

多個表/視圖(PostgreSQL 9.0+)

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


GRANT SELECT ON ALL TABLES IN SCHEMA public TO xxx;

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


ALTER DEFAULT PRIVILEGES IN SCHEMA public

   GRANT SELECT ON TABLES TO xxx;

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


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

為了避免冗長的多表更改中的錯誤,建議使用以下“自動”過程來生成GRANT SELECT每個表/視圖所需的內(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命令公開輸出到所有表,視圖和序列上,以實現(xiàn)復(fù)制n粘貼。自然,這將僅應(yīng)用于已經(jīng)創(chuàng)建的表。


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

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

請注意,PostgreSQL 9.0(今天處于beta測試中)將有一種簡單的方法:


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

GRANT


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

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

創(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;


查看完整回答
反對 回復(fù) 2019-12-07
  • 3 回答
  • 0 關(guān)注
  • 1498 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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