MongoDB の ユーザー 管理

0 件のコメント

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")