MongoDBデフォルトのユーザーとパスワードは何ですか?


102

ローカルと本番で同じ接続文字列を使用しています。接続文字列がmongodb://localhost/mydb

ユーザー名とパスワードは何ですか?このように保つのは安全ですか?

回答:


209

デフォルトでは、mongodbには有効なアクセス制御がないため、デフォルトのユーザーまたはパスワードはありません。

アクセス制御を有効にするには、コマンドラインオプション--authまたはsecurity.authorization構成ファイル設定のいずれかを使用します。

次の手順を使用するか、MongoDBドキュメントの「認証の有効化」を参照してください。

手順

  1. アクセス制御なしでMongoDBを起動します。

    mongod --port 27017 --dbpath /data/db1
    
  2. インスタンスに接続します。

    mongo --port 27017
    
  3. ユーザー管理者を作成します。

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. アクセス制御を使用してMongoDBインスタンスを再起動します。

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. ユーザー管理者として認証します。

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    

17
ユーザーがロールuserAdminAnyDatabaseで作成されている場合、データベースを作成することはできません。したがって、rolesセクションは次のようになります
。roles


1
あなたはDBPATHの使用を検索する場合:grepのDBPATH /etc/mongod.conf
rckd

13

@Camilo Silvaがすでに述べたことに加えて、データベースの作成、データベースの読み取り、書き込みなどへの無料アクセスを許可したいが、ルートロールを作成したくない場合は、次の方法で3番目のステップを変更できます。

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)


1

以前に提供された回答に加えて、1つのオプションは、データベースがすでにアクセス制御(--authスイッチ)で開始されている場合、「localhost例外」アプローチに従って最初のユーザーを作成することです。これを行うには、サーバーへのローカルホストアクセス権を持ってから、以下を実行する必要があります。

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

MongoDBのドキュメントに記載されているように:

localhost例外を使用すると、アクセス制御を有効にしてから、システムに最初のユーザーを作成できます。localhostの例外を除いて、アクセス制御を有効にした後、localhostインターフェイスに接続し、adminデータベースに最初のユーザーを作成します。最初のユーザーには、userAdminまたはuserAdminAnyDatabaseロールを持つユーザーなど、他のユーザーを作成するための特権が必要です。localhost例外を使用する接続には、adminデータベースに最初のユーザーを作成するためのアクセス権しかありません。

ドキュメントのそのセクションへのリンクは次のとおりです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.