我们在开发应用时可能会遇到这样的问题:B用户可能需要访问A用户创建的表。大家可能要问,这种情况很常见呀,有什么可说的呢?
其实在IQ数据库中,为了让B用户能够访问A用户创建的表,只需要A用户或DBA用户授予B用户相应的对象权限即可,比较简单。但是在缺省情况下,B用户访问时需要加上对象的属主名才行。在IQ中,如何能做到不加属主名就可访问呢?下面就结合一个例子来说明如何实现。
先简单说明一下例子的情况:
(1) 用户gdpuser创建了一个表叫做test1,然后往里面插入一些数据
(2) 用户gdpuser把test1表上的所有访问权限授予用户armyuser
(3) 在授权之后,用户armyuser就能够通过select * from gdpuser.test1查询表的数据了
(4) 假设armyuser希望使用select * from test1这样的方式访问test1表。
下面是实现的具体步骤和方法:
--1. 用DBA用户登录,执行下面语句创建用户
sp_addlogin 'gdpuser','111111'
grant resource to gdpuser
sp_addlogin 'armyuser','111111'
grant resource to armyuser
--2. gdpuser 创建test1表
create table test1(id int,name char(8))
insert into test1 values(1,'aaaaaa')
insert into test1 values(2,'bbbbbb')
commit
--3. gdpuser执行下面命令为armyuser授权
grant all on test1 to armyuser
--4. armyuser连接到iq server,执行select查询
select * from test1 --报错, Table 'test1' not found
select * from gdpuser.test1 --OK
--5. 用DBA用户登录iq,执行下面的语句(这两句是关键)
grant group to gdpuser
grant membership in group gdpuser to armyuser
--6. 用armyuser登录iq server,执行下面语句
select * from test1 --这回执行成功,不用加用户前缀gdpuser了。
阅读(3062) | 评论(0) | 转发(0) |