在pg数据库中创建只读用户可以采用如下方法。大体实现就是将特定schema的相关权限赋予只读用户。
--创建用户
CREATE USER readonly WITH ENCRYPTED PASSWORD '123456';
--设置用户默认开启只读事务
ALTER USER readonly SET default_transaction_read_only = ON;
--设置用户登录权限
ALTER USER readonly WITH login;
--将schema中usage权限赋予给readonly用户,访问所有已存在的表
GRANT usage ON SCHEMA xyh TO readonly;
--将schema中表的查询权限赋予给readonly用户,访问所有已存在的表
GRANT SELECT ON ALL tables IN SCHEMA xyh TO readonly;
--未来访问xyh模式下所有新建的表:
ALTER DEFAULT privileges IN SCHEMA xyh GRANT SELECT ON tables TO readonly;
--查数据库
select * from pg_database;
--查模式
select exists(select 1 from pg_namespace where nspname='xyh');