0

レプリカ セットのシャードを使用して MongoDB クラスターを構築しており、最初のレプリカ セットのセットアップと 3 つの構成サーバーを (すべて Linux サーバー上で) 実行し、3 つの構成サーバーを指す mongos インスタンスを実行していますが、mongos インスタンスに接続するときにmongo シェル経由でアプリケーション サーバー (Windows Server 2012 Standard x64 上) に接続し、ドキュメントに従って sh.addShard() コマンドを発行すると、次の応答が返されます。

> sh.addShard("rs1/xxx:xxx")
{
        "note" : "not authorized for command: addShard on database admin",
        "ok" : 0,
        "errmsg" : "unauthorized"
}

私が間違っていることを誰かが知っていますか?セキュリティのためにキーファイルを使用して、すべての Mongo インスタンスを実行しています。キーファイルは、これらのドキュメントに従って Windows と互換性のあるものです。

4

4 に答える 4

1

私の結果:

データ ノードがキーファイル ベースの認証を使用する場合、すべての mongod および mongos インスタンス (データ、構成など) も --keyFile を使用し、キーファイルの正確なコピーを指す必要があります。

次に、mongos を使用して構成サーバーに接続した後、必ず「管理者を使用」してください。これで問題が解決しない場合は、mongos プロンプトで管理者ユーザーを追加し、それらの資格情報で認証してから、もう一度試してください。

于 2013-11-20T19:00:32.743 に答える
0

それ以来、私はこれを解決しました。これは、キーファイルによって認証が有効になり、ローカルホスト接続を使用しても認証に十分ではなかったためです。クラスター全体でのキーファイルの使用を無効にし、管理者アカウントを作成し、それを使用して接続すると、機能しました。

于 2013-07-10T19:23:34.067 に答える
0

bisharkha の回答に加えて、keyfile を使用する手がかりがもう 1 つあります。

コマンドの後、use admin次で認証されていることも確認してください。 db.auth("user", "passwd")

于 2016-05-24T07:27:18.633 に答える