createUser (ユーザーの作成)
最終更新:2026-10-09
createUser (ユーザーの作成)
createUser はロール付きのデータベースユーザーを作成します。mongosh では db.createUser({ user, pwd, roles }) を使います。ロールは組み込み(read、readWrite、dbAdmin、root など)またはカスタムで、{ role, db } オブジェクトでデータベースをまたいでスコープできます。ユーザーはコマンドを実行したデータベースに所属します。認証は authorization が有効なときのみ効力を持ちます。
| カテゴリ | ユーザー認証 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
db.createUser({
user: "<username>",
pwd: "<password>",
roles: [ { role: "readWrite", db: "shop" } ]
})
⚙️ パラメータ
| user | ユーザー名。 |
|---|---|
| pwd | パスワード。passwordDigestor でハッシュ方式を制御できます。 |
| roles | { role, db } オブジェクトまたは文字列としてのロール一覧。 |
戻り値:成功時は { ok: 1 } を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// createUser: 読み取り専用ユーザーの作成
use admin
db.createUser({
user: 'reader',
pwd: 'secret123',
roles: [ { role: 'read', db: 'shop' } ]
})
出力:
{ ok: 1 }
📌 注意事項
- ユーザーは createUser を実行したデータベースに所属する
- データベースをまたぐロールは { role, db } で付与する
- パスワードは平文では保存されないが、強いものを設定する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
QcreateUser はどのデータベースで実行すべきですか?
Aユーザーが所属するデータベース(通常は admin か業務データベース)で実行します。クロス DB ロールは { role, db } でスコープします。
Qユーザーを作ったのに接続が認証をスキップします?
AMongoDB は authorization が有効なときのみ資格情報を確認します。無効なら誰でも接続できます。
Q組み込みロールには何がありますか?
Aread、readWrite、dbAdmin、dbOwner、userAdmin、root などがあります。