0

JDK7u25 と JConnect_JDBC3.jar を使用して Sybase ASE に接続しています (Sybase JDBC バージョン 6.0 のようです)。

私のURLは次のとおりです。

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.

接続しているユーザーがデータベース内の有効なユーザー (または のような有効なグループのメンバーpublic) であるmaster限り、正しいデータベースではなく、接続は成功します。ユーザーのデフォルト データベースを myDB に変更すると、無効な DB に接続しようとすると、デフォルトで 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
于 2013-10-01T13:23:06.157 に答える