在Apache Derby中打开SQL授权后,对表的权限丢失

时间:2014-03-08 23:06:59

标签: derby javadb

在Java DB(Derby)中创建的数据库设置如下,以允许身份验证和授权:

CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.connection.requireAuthentication','true');

CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.user.normal', 'normal');

CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.fullAccessUsers', 'sa');
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.readOnlyAccessUsers', 'normal');
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.defaultConnectionMode', 'readOnlyAccess');

“sa”用户名是在数据库创建期间创建的,因此它是数据库的所有者。

这是按预期工作的。我可以以“sa”用户身份登录并拥有完全访问权限。或者以“普通”用户身份登录,并限制为只读访问权限。

现在,我想使用SQL授权向特定用户授予特定权限。 为此,我必须首先通过执行以下命令来启用SQL授权:

CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.sqlAuthorization', 'true');

问题是,在“sa”下再次登录后,系统报告我没有SELECT和其他语句的权限。此外,我放弃了对数据库的完全所有权。

为什么Derby在执行启用SQL授权的语句后突然拒绝访问包括所有者在内的任何用户?

P.S。我使用Apache Derby Network Server - 10.9.1.0,它是NetBeans 7.3的Java EE 7安装的一部分

P.S 2.在SQL授权设置为true后,我尝试使用以下SQL错误代码收到的GRANT语句:

SQL state 42506: User 'SA' is not the owner of Table/View 'SA'.'DOCTYPES'.

即使整个数据库是使用此用户名创建的。

0 个答案:

没有答案