免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18375 | 回复: 8
打印 上一主题 下一主题

查看用户权限问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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)均不成功。
有没有其他思路呢?希望大家提点意见!

论坛徽章:
0
2 [报告]
发表于 2008-03-17 13:51 |只看该作者
自己顶下,用shell可以搞定,不过有点离谱

psql -u 用户名 -d 数据库名 -c "select relname,relacl from pg_class" | grep "用户"

论坛徽章:
0
3 [报告]
发表于 2008-03-17 13:56 |只看该作者
顶,有没有人知道如何操作字段类型为aclitem[]  ??????

论坛徽章:
0
4 [报告]
发表于 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 编辑 ]

论坛徽章:
0
5 [报告]
发表于 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

论坛徽章:
0
6 [报告]
发表于 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 该用户已被删除
7 [报告]
发表于 2008-05-19 14:40 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 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

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
9 [报告]
发表于 2010-07-11 21:12 |只看该作者
谢谢分享。对PG的很多内部机制还不够了解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP