我使用JDK7u25和JConnect_JDBC3.jar连接到Sybase ASE(它似乎是Sybase JDBC 6.0版)。
我的网址如下:
jdbc:sybase:Tds:MYSERVER:5004/myDB
我可以毫无问题地连接到服务器。
但是,即使我在URL中指定了错误的数据库名称,我也可以连接:
jdbc:sybase:Tds:MYSERVER:5004/myDBaa
OR
jdbc:sybase:Tds:MYSERVER:5004/wrongDB
OR
JDBC:SYBASE:TDS:MYSERVER:5004 /
那么,如果我在URL中指定了错误的数据库名称或没有数据库名称,它为什么允许连接我?
答案 0 :(得分:1)
您已成功连接到服务器,但我怀疑在您的连接打开后,如果您检查了所连接的数据库,则会列出master
。
只要您连接的用户是public
数据库中的有效用户(或master
等有效组的成员),您的连接就会成功 - 只是不正确D b。如果将用户的默认数据库更改为myDB,则尝试连接到无效数据库会将其默认为myDB。
**以下内容可能会破坏 - 请自担风险* *
可以将访客用户从主用户中删除,但无法通过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