web-dev-qa-db-ja.com

2.6でMongoに管理ユーザーを追加するにはどうすればよいですか?

2.4から2.6にアップグレードすると、認証が失敗しました。 このチュートリアル は簡単に思えますが、自分のデータベースからロックアウトされ続けます。私の状況は非常に単純です。Mongoサーバーが1つあり、接続するにはユーザーとパスワードの組み合わせが1つ必要です。

最初に、前述のようにlocalhost例外を介して接続します。次に、提案されているようにadminユーザーを作成します。

use admin
db.createUser(
  {
    user: "myadmin",
    pwd: "mysecret",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

さあ、新しいユーザーを追加する時がきたので、自分自身の健全性をチェックするために、シェルからログアウトします。 「mongo」と入力すると失敗します。以前は機能していましたが、OK、ユーザー名のパスワードは表示されず、localhostの例外はもうないので、概要を説明します here

mongo --port 27017 -u myadmin -p mysecret --authenticationDatabase admin

そして私は得る:

MongoDB Shell version: 2.6.0
connecting to: 127.0.0.1:27017/test
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
>

方法に関するアイデア:

  1. データベースを管理するシェルに簡単に出入りできるようにMongo 2.6をセットアップします(これは「システムユーザー管理者」だと思います)。

  2. リモートクライアントのユーザーが接続できるようにしますか? (mongo側だけで、iptablesで助けは必要ありません...)

ありがとう!

15
Tony

どうやら「システムユーザー管理者」だけでは不十分です。 rootユーザーを作成します。

> db.createUser({user:"someadmin",pwd:"secret", roles:[{role:"root",db:"admin"}]})

次に、データベースユーザーを追加します。

> use some_db
> db.createUser(
    {
      user: "mongouser",
      pwd: "someothersecret",
      roles: ["readWrite"]
    }
)

this Gist の詳細。 GistへのコメントとSOへのより良い回答へようこそ-私はシステム管理者ではありません

31
Tony

1)管理ユーザーuserAdminAnyDatabaseに割り当てるロールには、無制限の権限はありません。これは、任意のデータベースでユーザーを作成および管理できるロールにすぎません。どうやら、デフォルトでは、データベースユーザーの管理に直接関連しない特定のコマンド(ログからの起動警告のフェッチ、サーバーステータスのクエリなど)の実行が制限されています。

Tonyが示唆するように、代わりに「root」ロールを使用できます。 rootアカウントを使用して設定と管理を行い、データベースと通信するいくつかの基本的な読み取り/書き込み特権アカウントがある場合、これはおそらく最も理にかなっています。

2)一般に、クライアント側で接続するには、クライアントコードから接続した後でdb.authenticate()関数を呼び出すだけです。これを行う方法は、クライアントに使用しているドライバー/言語によって異なります。 node.jsドライバーコードはかなり典型的です: http://mongodb.github.io/node-mongodb-native/api-generated/db.html#authenticate

1
user3369108

@Tonyの方法に従っても、私は

`com.mongodb.CommandFailureException:`

追加

compile 'org.mongodb:mongo-Java-driver:2.13.1'

ただし、BuildConfig.groovyの依存関係セクションでは、問題が修正されました。

0
Vinay