1

JavaアプリケーションからリモートのIBMDB29.7データベースに接続しようとしています。接続は次のエラーで失敗します。

SQL30082Nセキュリティー処理が理由"24"( "ユーザー名および/またはパスワードが無効です")で失敗しました。SQLSTATE = 08001

これは、ユーザー名とパスワードに問題があることを示しています。ただし、正しいユーザー名と正しいパスワードを使用したことは間違いありません。

この問題を解決するために、私はすでに次のことを試しました。

  • 私はHP-UXを使用しており、db2のユーザーアカウントは「db2inst1」と呼ばれます。これは、私が見つけた命名規則に従って機能するはずです。
  • まったく同じユーザー名とパスワードでマシンにSSH接続すると正常に機能します。
  • ユーザーdb2inst1としてSSH経由でログインすると、「db2connecttoSAMPLE」が機能します。ただし、「db2 connect to SAMPLE user db2inst1」は、正しいパスワードを使用していても、上記のエラーを生成します。
  • グーグルを通して、dbmcfgの「データベースマネージャー認証」をSERVERに設定する必要があることがわかりました。ずっとSERVERに設定されていました。
  • 「db2getdbmcfg | grep -i auth」は、次の結果を生成します。
 GSS Plugin for Local Authorization    (LOCAL_GSSPLUGIN) = 
 Server Connection Authentication          (SRVCON_AUTH) = SERVER   
 Database manager authentication        (AUTHENTICATION) = SERVER   
 Alternate authentication           (ALTERNATE_AUTH_ENC) = NOT_SPECIFIED 
 Cataloging allowed without authority   (CATALOG_NOAUTH) = NO   
 Trusted client authentication          (TRUST_CLNTAUTH) = CLIENT   
 Bypass federated authentication            (FED_NOAUTH) = NO

編集:問題はまだ解決されていませんが、私はそれについてもっと知りました:

Db2diagには、次の警告が含まれています。

2012-07-20-06.18.24.445983-360 I122110A443レベル:警告PID
:24470 TID:223 PROC:db2sysc 0インスタンス:db2inst1ノード:000 DB:サンプルAPPHDL:0-25775 EDUID:223 EDUNAME:db2agent(サンプル)0機能:DB2 UDB、bsu security、sqlexLogPluginMessage、probe:20 DATA 1:サイズの文字列、67バイトユーザーdb2inst1のパスワード検証がrc=-2146500507で失敗しました

2012-07-20-06.18.24.446251-360 I122554A436レベル:警告PID
:24470 TID:223 PROC:db2sysc 0インスタンス:db2inst1ノード:000 DB:サンプルAPPHDL:0-25775 EDUID:223 EDUNAME:db2agent(サンプル)0機能:DB2 UDB、bsuセキュリティ、sqlexSlsSystemAuthenticate、プローブ:150メッセージ:アプリケーションID:データ#1:サイズの文字列、26バイトC0A8150A.D350.120720121824

また、SYSPROCへの一部のクエリでもエラーが生成されます。たとえば、これは次のとおりです。

db2 "values SYSPROC.AUTH_GET_INSTANCE_AUTHID()"

私は今、それがアクセス権に関係していると推測しています。クエリを使用していくつかの権利を確認できます

"SELECT * FROM TABLE(SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID('db2inst1'、'U'))AS T ORDER BY AUTHORITY"

この結果、CONNECTはD_USERの場合は「N」になりますが、D_GROUPの場合は「Y」になります。

db2inst1が接続できるように、D_USERは「Y」になっているはずです。したがって、私はを使用してこれに対する権利を付与しようとしました

db2「データベースのユーザーdb2inst1への接続を許可する」</p>

しかし、運が悪ければ、D_USERはまだ「N」のままであり、エラーは引き続き発生します。

私にできることは他にありますか?

この問題について助けていただければ幸いです。

4

2 に答える 2

1

皆さん、アイデアや提案をどうもありがとうございました! 今日、ようやくこの問題を解決することができました。解決策は非常に簡単です。パスワードは確かに間違っていました。私のインスタンスとデータベースは、スクリプトによって自動的にセットアップされました。このスクリプトは、オペレーティング システムの db2inst1 ユーザー アカウントとデータベースの db2inst1 ユーザー アカウントに異なるパスワードを使用していることが判明しました。私はずっと、これらが異なるパスワードを持つことができる 2 つの異なるユーザー アカウントであることを理解していませんでした。インストール スクリプトを調べて、それをオンラインの db2 インストール チュートリアルと比較すると、それが明確になりました。繰り返しますが、どうもありがとうございました:)

于 2012-07-27T10:52:21.440 に答える
0

~db2inst1/sqllib(具体的には )のファイル アクセス許可の一部~db2inst1/sqllib/security/db2ckpwが変更されていると思われます。

ユーティリティを使用して、これ (およびその他の問題) を修正できdb2iupdtます。インスタンスが停止している間、これを root として実行する必要があります。資料: db2iupdt - インスタンスの更新コマンド

于 2012-07-22T04:21:22.320 に答える