免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6386 | 回复: 8

informix查询用户!多谢! [复制链接]

论坛徽章:
0
发表于 2009-02-19 15:55 |显示全部楼层
环境:AIX5306;IDS 10FC8X7
目的:建查询用户,权限是只能对数据库的数据表进行select操作!(表很多呀!)
请教各位如何实现?
另外oracle10g是不是比较简单:grant select any table to username!

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-02-19 16:10 |显示全部楼层

回复 #1 stone_jinhao 的帖子

没办法~~ 有你告诉我~

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-02-19 16:17 |显示全部楼层
不过用脚本还是可以的~~

  1. #!/bin/sh
  2. TMPFILE="tabname.unl"
  3. DBNAME="testdb"

  4. dbaccess ${DBNAME} - <<!SQL >/dev/null 2>/dev/null
  5. unload to ${TMPFILE} delimiter ""
  6. select tabname from systables where tabid > 99 and tabtype='T';

  7. !SQL

  8. awk '{print "grant select on "$1" to user1;"}' ${TMPFILE} > ${TMPFILE}.sql

  9. dbaccess ${DBNAME} ${TMPFILE}.sql

  10. rm -f ${TMPFILE}.sql ${TMPFILE}

  11. exit 0
复制代码

论坛徽章:
0
发表于 2009-02-19 17:18 |显示全部楼层
多谢!
另:如何查看某个用户对表级别的权限

论坛徽章:
0
发表于 2009-02-19 17:19 |显示全部楼层
试了一下,这样也可以!
select 'revoke all on ' ||tabname||' from public; ' from systables where owner='informix'  and tabtype='T';

select 'grant select on '||tabname||' to 查询用户; ' from systables where owner='informix' and tabtype='T';

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2009-02-19 18:29 |显示全部楼层

回复 #5 stone_jinhao 的帖子

select 'revoke all on ' ||tabname||' from public; ' from systables where owner='informix'  and tabtype='T';

这条还是小心点吧~~可能很多用户都用不了了...

论坛徽章:
0
发表于 2009-02-19 22:23 |显示全部楼层
我前几天刚有建过,老总要我给项目经理开只读权限
大概是这样
新建一个系统用户
grant connect to user
revoke all on tabname from public
然后再
grant select on tabname to user
tabname用
select tabname from systables where tabid >99生成

论坛徽章:
0
发表于 2009-02-20 12:34 |显示全部楼层
查询用户数据库级别权限
select * from sysusers
sysuser里面可以看到用户的角色(dba,connect,resource),
sysusers 系统目录表描述了数据库中所授的每套权限。数据库中每个有权限的用户都对应有一行。
sysusers系统目录表包括的列入下表所示。
username NCHAR( 数据库的用户名或角色名。
usertype   NCHAR(1) 指定库级权限:
                       D=数据库管理员(所有权限)
                       R=资源(创建永久表和索引)
                       G=角色
                       C=连接(在现存的表中作用)
priority    SMALLINT   保留为将来用
password CHAR(   保留为将来用
username列有索引且只能是唯一值。username 可以是角色名。

查询用户对表的所属权限:
SELECT tabname, grantor, grantee, tabauth
FROM systables a, systabauth b
WHERE a.tabid = b.tabid
ORDER BY tabname

tabauth 字符串是由 8 个值组成的组合体:
s或S 选择
u或U 更新
* 列级别特权
i或I 插入
d或D 删除
x或X 索引
a或A 改变
r或R 引用
n或N 从属特权
grantor 特权授权者名称
grantee 特权被授权者名称

论坛徽章:
0
发表于 2009-02-20 12:36 |显示全部楼层
多谢!各位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP