0

我正在使用 JDK7u25 和 JConnect_JDBC3.jar(它似乎是 Sybase JDBC 6.0 版)连接到 Sybase ASE。

我的网址如下:

jdbc:sybase:Tds:MYSERVER:5004/myDB

我可以毫无问题地连接到服务器。

但是,即使我在 URL 中指定了错误的数据库名称,如下所示,我也可以连接:

jdbc:sybase:Tds:MYSERVER:5004/myDBaa

或者

jdbc:sybase:Tds:MYSERVER:5004/wrongDB

或者

jdbc:sybase:Tds:MYSERVER:5004/

那么,如果我在 URL 中指定不正确或没有数据库名称,为什么它允许连接我呢?

4

1 回答 1

2

您已成功连接到服务器,但我怀疑在您的连接打开后,如果您检查您连接到的数据库,它会列出master.

只要您连接的用户是数据库中的有效用户(或有效组的成员,如publicmaster,您的连接就会成功 - 只是不会连接到正确的数据库。如果您将用户的默认数据库更改为 myDB,则尝试连接到无效数据库会将其默认返回为 myDB。

**以下内容可能会破坏 - 风险自负* *

可以从 master 中删除来宾用户,但不能通过sp_dropuser.

首先,您必须启用对系统表的手动更新:

sp_configure 'allow udpates to system tables', 1

接下来,您将从 master..sysusers 中手动删除来宾用户

delete from master..sysusers where name = "guest"

最后关闭对系统表的手动更新以防止意外损坏:

sp_configure 'allow updates to system tables', 0

如果用户没有指定正确的数据库,这应该会阻止用户连接到您的系统。它还将阻止未获得默认数据库权限的用户连接。

如果您需要撤消此更改,只需将访客用户添加回主数据库:

sp_adduser guest
于 2013-10-01T13:23:06.157 回答