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

Dockerを介してMongoDBで認証を有効にする方法は?

    ご覧の場合:

    • https://github.com/docker-library/mongo/blob/master/4.2/Dockerfile
    • https://github.com/docker-library/mongo/blob/master/4.2/docker-entrypoint.sh#L303-L313

    docker-entrypoint.shで使用されている2つの変数があることに気付くでしょう。 :

    • MONGO_INITDB_ROOT_USERNAME
    • MONGO_INITDB_ROOT_PASSWORD

    それらを使用してrootユーザーを設定できます。たとえば、次のdocker-compose.ymlを使用できます ファイル:

    mongo-container:
      image: mongo:3.4.2
      environment:
          # provide your credentials here
          - MONGO_INITDB_ROOT_USERNAME=root
          - MONGO_INITDB_ROOT_PASSWORD=rootPassXXX
      ports:
        - "27017:27017"
      volumes:
          # if you wish to setup additional user accounts specific per DB or with different roles you can use following entry point
        - "$PWD/mongo-entrypoint/:/docker-entrypoint-initdb.d/"
      # no --auth is needed here as presence of username and password add this option automatically
      command: mongod
    

    docker-compose upでコンテナを起動する場合 次のエントリに注意してください:

    ...
    I CONTROL  [initandlisten] options: { net: { bindIp: "127.0.0.1" }, processManagement: { fork: true }, security: { authorization: "enabled" }, systemLog: { destination: "file", path: "/proc/1/fd/1" } }
    ...
    I ACCESS   [conn1] note: no users configured in admin.system.users, allowing localhost access
    ...
    Successfully added user: {
        "user" : "root",
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    }
    

    ルートとは別にカスタムユーザーを追加するには、エントリポイント実行可能スクリプト(docker-composeにマウントされているため、$ PWD / mongo-entrypointdirの下に配置)を使用します。 エントリポイントへ):

    #!/usr/bin/env bash
    echo "Creating mongo users..."
    mongo admin --host localhost -u USER_PREVIOUSLY_DEFINED -p PASS_YOU_PREVIOUSLY_DEFINED --eval "db.createUser({user: 'ANOTHER_USER', pwd: 'PASS', roles: [{role: 'readWrite', db: 'xxx'}]}); db.createUser({user: 'admin', pwd: 'PASS', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]});"
    echo "Mongo users created."
    

    エントリポイントスクリプトが実行され、追加のユーザーが作成されます。



    1. Jedisタイムアウトを構成する

    2. wampでのMongoDbPHPドライバーのインストールの問題

    3. MongoDBでの結果を制限しますが、それでも完全なカウントを取得しますか?

    4. mongodb3.6の新しいURLを使用してgolangから接続する方法