Chinaunix

标题: 查看用户权限问题 [打印本页]

作者: rwx_hc    时间: 2008-03-17 11:32
标题: 查看用户权限问题
查看表的访问权限查可以用:
登录到数据库:
#\dp 表名
#\z 表名
例子:
# \z t_host
        Access privileges for database "db_3as"
Schema | Table  |          Access privileges
--------+--------+-------------------------------------
public | t_host | {=,administrator=arwdRxt,guangxi=r}
(1 row)

这是已知表名查看其授权情况,但如何查看一个用户的访问权限呢?
相关信息从pg_class表中可以取得
例子:
# select relname,relacl from pg_class where relname='t_host';
relname |               relacl
---------+-------------------------------------
t_host  | {=,administrator=arwdRxt,guangxi=r}
(1 row)

这个方法和\z 命令获取的信息差不多,可以限定表名,但限定用户操作有问题!
relacl类型为 aclitem[] ;应该是一个数组类型;可以用relacl[1], relacl[2] ...等来操作,但是在匹配用户时遇到了困难,用like操作不了,转换类型也出错:cast (relacl[1] as text) 或 cast (relacl as text)均不成功。
有没有其他思路呢?希望大家提点意见!
作者: rwx_hc    时间: 2008-03-17 13:51
自己顶下,用shell可以搞定,不过有点离谱

psql -u 用户名 -d 数据库名 -c "select relname,relacl from pg_class" | grep "用户"
作者: rwx_hc    时间: 2008-03-17 13:56
顶,有没有人知道如何操作字段类型为aclitem[]  ??????
作者: roamvalley    时间: 2008-03-18 11:02
进入psql控制台后,输入:
SET search_path TO INFORMATION_SCHEMA, public;
select * from role_table_grants;

如果想按照权限查询,比如按照select权限,可以作:
select * from role_table_grants where privilege_type='SELECT';

用table_name这个field可以选择查询的表

[ 本帖最后由 roamvalley 于 2008-3-18 11:07 编辑 ]
作者: rwx_hc    时间: 2008-03-18 13:50
标题: 回复 #4 roamvalley 的帖子
没有这个表:role_table_grants
select * from role_table_grants;
ERROR:  Relation "role_table_grants" does not exist

也许是版本不同吧,我的是7.3
作者: yueliangdao0608    时间: 2008-03-20 17:37
原帖由 rwx_hc 于 2008-3-18 13:50 发表
没有这个表:role_table_grants
select * from role_table_grants;
ERROR:  Relation "role_table_grants" does not exist

也许是版本不同吧,我的是7.3


我的有。

----------------------------------------------------------------------------------------------------
PostgreSQL 8.2.6 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52)
(1 row)
作者: tkdchen    时间: 2008-05-19 14:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 有行动才会有收获    时间: 2010-07-10 18:03
进入psql控制台后,输入:
SET search_path TO INFORMATION_SCHEMA, public;
select * from role_table_g ...
roamvalley 发表于 2008-03-18 11:02


good
作者: renxiao2003    时间: 2010-07-11 21:12
谢谢分享。对PG的很多内部机制还不够了解。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2