MongoDB ユーザー管理

MongoDBでのユーザー管理には、ユーザーの作成、ロールの割り当て、認証、ログインなどの操作が含まれます。

以下に、MongoDB Shell (mongo) または MongoDB Compass を使用してユーザーを管理する方法を含む詳細な説明を示します。

MongoDB Shell (mongo) を使用したユーザー管理

以下は、MongoDB Shell (mongosh) を使用したユーザー管理の詳細な説明です。ユーザーの作成、ロールの割り当て、認証、ログインの具体的な手順を含みます。

1. MongoDB に接続する

まず、ターミナルを開き、mongosh コマンドを使用して MongoDB サーバーに接続します:

mongosh --host <hostname> --port <port>

説明:

  • mongosh:MongoDB Shell コマンドラインツールを起動します。
  • --host <hostname>:MongoDB サーバーのホスト名またはIPアドレスを指定します。
    • <hostname>:MongoDB サーバーのホスト名(例:localhost)またはIPアドレス(例:127.0.0.1)。
  • --port <port>:MongoDB サーバーのポート番号を指定します。
    • <port>:MongoDB サーバーがリッスンするポート番号、デフォルトポートは27017。

2. ターゲットデータベースに切り替える

MongoDB では、ユーザーは特定のデータベースに対して作成され、使用するuseコマンドで、ユーザーを作成するデータベースに切り替えます:

use <database_name>
  • database_name- 切り替える対象のデータベースです。

3. ユーザーを作成する

db.createUser コマンドを使用してユーザーを作成し、ロールを割り当てます。

例えば、名前が testuser、パスワードが password123 のユーザーを作成し、readWrite と dbAdmin ロールを付与します:

db.createUser({
  user: "testuser",
  pwd: "password123",
  roles: [
    { role: "readWrite", db: "<database_name>" },
    { role: "dbAdmin", db: "<database_name>" }
  ]
})

4. ユーザーを検証する

ユーザーを作成した後、db.auth コマンドを使用してユーザーを認証できます:

db.auth("testuser", "password123")

5. 認証を有効にする

認証済みユーザーのみが MongoDB にアクセスできるようにするには、認証を有効にする必要があります。

MongoDB 設定ファイル mongod.conf を編集し、その中に以下の内容を追加します:

security:
  authorization: "enabled"

その後、変更を適用するために MongoDB サービスを再起動します。

6. ユーザーとしてログインする

認証を有効にした後、作成したユーザーとして MongoDB に接続する必要があります:

mongosh --host <hostname> --port <port> -u "testuser" -p "password123" --authenticationDatabase "<database_name>"

7. ユーザーを削除する

使用するdb.dropUserコマンドで指定したユーザーを削除します。

例えば、名前が testuser のユーザーを削除します:

db.dropUser("testuser")

操作例

以下は完全な操作例のフローです:

MongoDB Shell を起動してサーバーに接続します:

mongosh --host localhost --port 27017

testdb データベースに切り替えます:

use testdb

testuser ユーザーを作成します:

db.createUser({
  user: "testuser",
  pwd: "password123",
  roles: [{ role: "readWrite", db: "testdb" }]
})

認証を有効にして MongoDB インスタンスを再起動します

mongod.conf ファイルを編集し、以下の内容を追加します:

security:
  authorization: "enabled"

MongoDB サービスを再起動します:

sudo systemctl restart mongod

testuser ユーザーを使用して認証接続します:

mongosh --host localhost --port 27017 -u "testuser" -p "password123" --authenticationDatabase "testdb"

testuser ユーザーを削除します:

db.dropUser("testuser")
その他の拡張