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") その他の拡張