在Sybase IQ中设置用户的缺省数据库/模式

时间:2013-07-24 04:27:31

标签: database sybase sybase-iq

我用Google搜索了一下,什么都没发现。简短的故事,我创建了一个用户并授予了我的SyBase中的表。但是当我尝试

select * from table1

它不起作用。错误显示Permission denied: you don't have permission to select from "table1",我尝试在表名之前添加dbname,这样就可以了:

select * from dbname.table1

我怀疑用户默认数据库是其他东西所以我想将dbname设置为他的默认数据库。有人知道怎么做吗?

3 个答案:

答案 0 :(得分:2)

这与数据库名称(或登录策略)无关。鉴于您的评论“dbname”实际上是拥有该表的用户,这就是正在发生的事情。

当您指定没有所有者的表名时,服务器必须确定您所指的表。它首先查找您拥有该名称的表。如果找不到,则查找您所属的任何组所拥有的表。我怀疑其中一个组有一个名为“table1”的表,您无权选择。

当您使用指定所有者的表名时,服务器确切地知道要使用哪个表。由于您执行有权从该表中进行选择,因此您可以获得所需的结果。

答案 1 :(得分:1)

IQ没有默认数据库/模式。相反,它使用登录策略。每个数据库都有一个分配给它的登录策略,可以对其进行更改。您还可以创建自定义登录策略。

创建没有指定登录策略的用户帐户时,它会自动获取root登录策略。

有关更多信息,请查看以下SAP Sybase IQ文档:

Intro to IQ: Managing Users and Groups

System Admin Guide V1: Managing User IDs and Permissions

答案 2 :(得分:0)

使用视图或过程是一种有用的方法。也就是说,要在(IQ 15.x)中建立“默认”模式,可以使用组。实质上,一个授予组架构所有者的组,并使该组的各个登录帐户(或其他组)成员。请注意,这只允许用户访问模式 - 也就是说,它不需要在模式/所有者名称前面添加对象(除非有对象名称冲突只能通过显式schema.object命名解析)。这不包括授予权限。隐式表所有者相关权限都不会继承。但是,由于架构/所有者现在也是一个组,因此可以在该级别授予权限。

请参阅:http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc00170.1540/doc/html/san1288042708174.html(管理用户ID和权限)。请注意:这种材料在变得有用之前通常需要仔细阅读和实验。

据我了解,这种方法是对智商16中新的基于角色的模型的补充(功能上的替代)。然而,由于我仍然感觉我的智商16,所以可能还有很多要说的,我还没准备好发表评论。