MongoDB で アクセス制御を有効化 するとユーザー管理が必要になってきます。 ここでは MongoDB で使う ユーザーに関する操作として ユーザーの追加、一覧表示、変更、削除 といった一連の方法についてまとめました。 ユーザー情報の変更ではよく使いそうな パスワード変更、ロール追加、ロール削除のみ扱っています。
ユーザー の 作成
新規ユーザーは db.createUser() メソッドで作成できます。
ユーザー名は「データベース名+ユーザー名」の組み合わせで一意になっているようなので、登録する際は接続先データベース名に注意してください。
構文
db.createUser({
user: "<username>",
pwd: "<password>",
roles: [{
role: "<role>",
db: "<database>"
}]
})
| フィールド名 | 型 | 説明 |
|---|---|---|
| user | string | 登録するユーザー名を指定します。 |
| pwd | string | 登録するユーザーのパスワードをクリアテキストで指定します。 |
| roles | array | 登録するユーザーのロール名またはロールを表現するオブジェクト(ロールと適用先データベースを定義したオブジェクト)を指定します。 |
| roles.role | string | ロール名を指定します。 |
| roles.db | string | ロール適用先データベース名を指定します。 |
サンプルコード
user test
db.createUser({
user: "tanaka",
pwd: "qwerty",
roles: [{
role: "readWrite",
db: "test"
}]
})
ユーザー の 一覧表示
db.getUsers() メソッドで現在接続中のデータベースに登録されているユーザー一覧が表示できます。
構文
db.getUsers()
サンプルコード
use test db.getUsers()
ユーザー情報 の 変更
ユーザー情報の変更として「パスワード変更」「ロール追加」「ロール削除」についてまとめます。
パスワード変更
db.changeUserPassword() メソッドを利用すると、指定したユーザーのパスワードを更新できます。
構文
db.changeUserPassword("<username>", "<password>")
| 引数 | 型 | 説明 |
|---|---|---|
| username | string | パスワード変更したいユーザー名を指定します。 |
| password | string | 新しいパスワードを指定します。 |
サンプルコード
use test
db.changeUserPasword("tanaka", "password")
ロール 追加
db.grantRolesToUser() メソッドで指定したユーザーにロールを追加することができます。
ロールの指定方法はユーザー作成 db.createUser() でロール指定する方法と同じです。
構文
db.grantRolesToUsre("<username>", ["<roles>"]})
| 引数 | 型 | 説明 |
|---|---|---|
| username | string | ロール追加したいユーザー名を指定します。 |
| roles | array | 追加したいロール名またはロールオブジェクト(ロール名とデータベース名を定義したオブジェクト)を指定します。 |
サンプルコード
use products
db.grantRolesToUsre(
"tanaka",
["readWrite", {role: "read", db: "stock"}]
)
ロール 削除
db.revokeRolesFromUser() メソッドで指定したユーザーからロールを削除することができます。
ロールの指定方法はユーザー作成 db.createUser() でロール指定する方法と同じです。
構文
db.revokeRolesFromUsre("<username>", ["<roles>"]})
| 引数 | 型 | 説明 |
|---|---|---|
| username | string | ロール削除したいユーザー名を指定します。 |
| roles | array | 削除したいロール名またはロールオブジェクト(ロール名とデータベース名を定義したオブジェクト)を指定します。 |
サンプルコード
use products
db.revokeRolesFromUsre(
"tanaka",
[{role: "read", db: "stock"}]
)
ユーザー の 削除
db.dropUser() で指定したユーザーを削除できます。
db.removeUser() というメソッドも存在しますが、こちらは 2.6以降 非推奨となっています。
構文
db.dropUser("<username>")
| 引数 | 型 | 説明 |
|---|---|---|
| username | string | 削除したいユーザー名を指定します。 |
サンプルコード
use test
db.dropUser("tanaka")
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!