如何在PostgreSQL中建只读账号

Posted 狂神314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在PostgreSQL中建只读账号相关的知识,希望对你有一定的参考价值。

转:

如何在PostgreSQL中建只读账号

Posted on 2014-01-21 22:00:15 by osdba

在PostgreSQL中并没有CREATE TABLE权限名称,这是与其它数据库不同的一个地方,PostgreSQL是通过控制是否在模式schema中上有CREATE控制用户的能否创建表的权限的,默认安装下,任何用户都有在模式public中CREATE的权限,所以要创建只读账号的第一步,我们要先去除在模式public中的CREATE权限:

REVOKE  CREATE  ON SCHEMA public from public;

下面的SQL创建了一个名为“readonly”的用户:

CREATE USER readonly with password ‘query‘;

然后把现有的所有在public这个schema下的表的SELECT权限赋给用户readonly,执行下面的SQL命令:

GRANT SELECT ON  ALL TABLES IN SCHEMA public TO readonly;

上面的SQL命令只把现有的表的权限给了用户readonly,但如果这之后创建的表,readonly用户还是不能读,需要使用下面的SQL把以后创建的表的SELECT权限也给用户readonly:

ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly; 

注意:上面的过程只是把名称为public的schema下的表赋了只读权限,如果想让这个用户能访问其它schema下的表,需要重复执行:

GRANT SELECT ON  ALL TABLES IN SCHEMA other_schema TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA other_schema grant select on tables to readonly;

以上是关于如何在PostgreSQL中建只读账号的主要内容,如果未能解决你的问题,请参考以下文章

如何在 postgresql 中创建只读视图,类似于 oracle?

如何在 PostgreSQL 中创建只读用户?

如何在 gorm postgresql 中定义只读副本

sql 如何在PostgreSQL中创建只读用户

postgresql数据库基础

给postgresql的登陆用户设置只读模式