码迷,mamicode.com
首页 > 数据库 > 详细

PostgreSQL实现只读表

时间:2014-09-09 13:55:50      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   使用   ar   数据   sp   html   

        PostgreSQL中只读表的实现可以分为两部分:命令操作前数据库中已有的表、命令操作后数据库新建的表。在本文中会就这两部分分别加以实现从而实现完整的只读查询。

一、初始环境

数据库:PostgreSQL 9.3

用户:user1、user2

模式:shema1(所有者为user1)

表:shema1.t1(id int)

二、已有的表

       ? 对此时已有的表shema1.t1实现user2的只读访问,分别需要经过:对shema1模式的访问权限、对t1表的select访问权限。操作如下:

    以user1用户或superuser执行命令:

    grant usage on schema shema1 to user2;

    在PostgreSQL中,模式上的权限有:create和usgae两种,usage权限表示用户可以访问该模式,并查询该模式下有那些对象;create权限表示用户可以在该模式下创建对象。此处仅需要user2用户拥有schema1模式的访问权限即可,若未赋予该权限,user2用户在查询时会报错在该schema上的权限不足。

    然后,继续执行命令:

    grant select on all tables in schema schema1 to user2;

    该命令实现将shema1模式中现在已有的所有表的select权限赋予给user2用户。

    通过这两条命令最终实现user2用户对schema1模式中现已有的所有表的只读访问。?


三、新建的表

        user2用户对user1后期新建表的只读访问同样需要分两部:schema模式的权限、后期新建表的select权限。

      对schema1的权限可参照上文,此处不再赘述;对后期新建表的select权限可通过alter default privileges命令实现(该命令属于9.0后新增)。

      具体命令如下:

      alter defualt privileges in schema shema1 grant select on tables user2;   

      通过这条命令可以实现在该命令之后user2用户对user1新建表的select只读访问。

四、后记

     通过这两部操作最终就实现了user2用户对user1用户在shema1模式所有表的只读访问。

      对于默认情况(此处是指所有用户都使用public模式),可以略过对shema模式的权限操作。


PostgreSQL实现只读表

标签:style   http   color   os   使用   ar   数据   sp   html   

原文地址:http://my.oschina.net/u/1171200/blog/311588

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!