sql >> データベース >  >> NoSQL >> MongoDB

Java3.0ドライバーでMongoDB認証を確認する

    MongoClientコンストラクターは、接続関連の例外をスローしません。むしろ、接続を確立し、提供された資格情報に基づいて認証を試みる1つ以上のバックグラウンドスレッドを開始した直後に戻ります。

    例外がスローされるのは、アプリケーションがMongoClientを使用してMongoDBサーバーで何らかの操作を実行する場合のみです。ただし、その例外は一般的なタイムアウト例外であり、サーバー選択タイムアウトが期限切れになる前に、ドライバーが操作に適したサーバーを見つけられなかったことを示します。例:

        MongoClient client = new MongoClient(asList(new ServerAddress("localhost"), new ServerAddress("localhost:27018")),
                                             singletonList(MongoCredential.createCredential("username",
                                                                                            "admin",
                                                                                            "bad".toCharArray())),
                                             MongoClientOptions.builder().serverSelectionTimeout(1000).build());
    
    
        try {
            client.getDB("admin").command("ping");
        } catch (MongoTimeoutException e) {
            // do something
        }
    

    1秒後にMongoTimeoutExceptionをスローします。 MongoSecurityExceptionはスローされませんが、MongoTimeoutExceptionのメッセージには関連する詳細が含まれます。たとえば、サーバーの1つがダウンし、残りの2つで認証が失敗したときに、3つのメンバーのレプリカセットに接続すると、MongoTimeoutExceptionのメッセージフィールドは次のようになります。

    ReadPreferenceServerSelector {readPreference=primary}に一致するサーバーを待機中に1000ミリ秒後にタイムアウトになりました。クラスタ状態のクライアントビューは{type=UNKNOWN、servers =[{address =localhost:27017、type =UNKNOWN、state =CONNECTING、exception ={com.mongodb.MongoSocketOpenException:Exceptionopeningsocket}です。これは{java.net.ConnectException:接続が拒否されました}}、{address =localhost:27018、type =UNKNOWN、state =CONNECTING、exception ={com.mongodb.MongoSecurityException:Exceptionauthenticating MongoCredential {mechanism =null、userName ='username'、source ='admin'、password =、mechanismProperties ={}}}、{com.mongodb.MongoCommandException:コマンドがエラー18で失敗しました:「認証に失敗しました。」サーバーlocalhost:27018。完全な応答は{"ok":0.0、 "code":18、 "errmsg":"認証に失敗しました。" }}}]




    1. Java用の最高のRedisライブラリ

    2. 最近保存されたキーがLaravel経由で表示されないRedisCLI

    3. SQLのようなRedisデータベーステーブルを設計しますか?

    4. MongoDBデータベースの暗号化