从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。
分类: Sybase
2015-02-04 17:32:00
最近,一个客户在进行应用开发时需要在IQ数据库中建立一个拥有只读权限的查询用户,问应该怎样实现。下面跟大家分享一下具体的作法,为了你能够简单易懂的让大家了解这个方法,我将举一个例子加以说明:
假设IQ数据库中abcuser创建了应用的表,我们希望创建一个用户user1,让这个用户能够只读访问abcuser创建的表。实现方法如下:
(1) 创建abcuser用户(用DBA用户或具有DBA权限的用户执行)
grant connect,resource to "abcuser" identified by "pwd123"
(2) 创建表,并插入数据 ( 用abcuser登陆执行 )
create table customer(id int,name char(8))
insert into customer values(1,'abc')
commit
(3) 创建与表属主用户同名的组(用DBA用户或具有DBA权限的用户执行)
grant group to "abcuser"
(4) 创建用户user1(用DBA用户或具有DBA权限的用户执行),并授权
grant connect to "user1" identified by "pwd123"
grant membership in group "abcuser" to "user1" ---让user1属于abcuser组
grant select on abcuser.customer to user1 --把abcuser用户创建的表的查询权限赋予user1
(5) 用户user1登陆,执行查询
select * from customer --ok
insert into customer values(2,'aaa') --error 没有权限执行。
在实际项目中,如果打算对已有IQ数据库实现这一目标,那么可以省略上面的(1),(2)步,直接从(3)步开始,假设你们让user1作为只读查询用户:
grant group to "abcuser"
grant connect to "user1" identified by "pwd123"
grant membership in group "abcuser" to "user1"
grant select on abcuser.table1 to user1
grant select on abcuser.table2 to user1
grant select on abcuser.table3 to user1
grant select on abcuser.table4 to user1
注意:
(1) 需要为abcuser创建的每一个希望user1只读访问的表都要执行 grant select语句
(2) 如果abcuser拥有的表有很多,那么需要编写脚本进行授权。或者使用DBAssistant工具,成批选择或全部选择进行授权。
yujian6312139522015-08-13 16:27:28
如果需要开放查询的表是每天都生成的新表,比如abcuser.table1_150606,每天都会生成一个,并且以当日时间戳结尾,有没有好的办法,把这样一类的表(abcuser.table1_XXXX)以后的时间都开放?