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/,如需转载,请注明出处,否则将追究法律责任。