PG 裡面的只讀使用者,只讀資料庫

babyyellow發表於2012-08-21
pg 裡面如何實現一個使用者的只讀訪問呢?

oracle 裡 我們透過對每個物件的單獨的授予 select 許可權,解決。

整個資料庫級別的只讀怎麼做? oracle 裡應該是對應到schema 級別的,設定表空間只讀。

pg 下面怎麼做呢?

PG 裡有個引數  default_transaction_read_only[code]
postgres=# create user lsl password 'lsl' ;
CREATE ROLE
postgres=# alter user lsl set default_transaction_read_only=on;
ALTER ROLE

postgres=# grant all on database cms_pcbaby_app to lsl;      
GRANT

cms_pcbaby_app=> create table t(id int) ;
ERROR:  cannot execute CREATE TABLE in a read-only transaction
cms_pcbaby_app=>
[/code]資料庫級別也可以設定這個引數的。[code]
cms_pcbaby_app=> \c postgres postgres
You are now connected to database "postgres" as user "postgres".
postgres=# create database  p with wner=postgres ;
CREATE DATABASE

postgres=# alter database p set default_transaction_read_only= on ;
ALTER DATABASE
postgres=# \c p
You are now connected to database "p" as user "postgres".
p=# create table abc (id int) ;
ERROR:  cannot execute CREATE TABLE in a read-only transaction
p=#
[/code]PG  很好,很強大!!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-741459/,如需轉載,請註明出處,否則將追究法律責任。

相關文章