シャード+レプリカセット構成でユーザ作成をする場合は、順番は多少前後してもよさそうだけど、まずレプリカセットでユーザを作成したあと、シャードでユーザを作成するのがよさそう
前提条件
- レプリカセットは構築済み
- シャード構成は構築済み
- mongosのポートは27017
- mongodのポートは27018
- mongocのポートは27019
- 「/etc/mongod/mongodb-keyfile」の権限は600で作成済み
レプリカセットでユーザ作成
noauthモードでmongod起動
- mongodのauth関連の設定ファイルはこんな感じ
noauth=true #auth=true #keyfile=/etc/mongod/mongod-keyfile
管理ユーザ作成
- mongodのPRAIMARYで実行する
- PRIMARYで実行するとSECONDARYに同期される
mongo --port 27018 admin db.createUser( { user: "root", pwd: "PASSWORD", roles: [ "root", "backup", "restore", "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase" ] } ) db.createUser( { user: "admin", pwd: "PASSWORD", roles: [ "root", "backup", "restore", "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase" ] } ) exit mongo --port 27018 admin -u root -p PASSWORD use sg2 db.createUser( { user: "app", pwd: "PASSWORD", roles: [ { role: "dbOwner", db: "appdb" }, { role: "dbOwner", db: "appdb" } ] } ) use admin db.system.users.find() exit
authモードでmongod起動
- mongodのauth関連の設定ファイルはこんな感じ
- レプリカセットの場合はkeyfileがないとレプリケーションできない
#noauth=true auth=true keyfile=/etc/mongod/mongod-keyfile
シャードでユーザ作成
authモードでmongoc起動
- mongocのauth関連の設定ファイルはこんな感じ
#noauth=true auth=true keyfile=/etc/mongod/mongod-keyfile
noauthモードでmongos起動
- mongosのauth関連の設定ファイルはこんな感じ
noauth=true #auth=true #keyfile=/etc/mongod/mongod-keyfile
管理ユーザ作成
- mongosで実行する
- mongosで実行するとmongocに同期される
mongo --port 27018 admin db.createUser( { user: "root", pwd: "PASSWORD", roles: [ "root", "backup", "restore", "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase" ] } ) db.createUser( { user: "admin", pwd: "PASSWORD", roles: [ "root", "backup", "restore", "readWriteAnyDatabase", "userAdminAnyDatabase", "dbAdminAnyDatabase" ] } ) exit mongo --port 27018 admin -u root -p PASSWORD use sg2 db.createUser( { user: "app", pwd: "PASSWORD", roles: [ { role: "dbOwner", db: "appdb" }, { role: "dbOwner", db: "appdb" } ] } ) use admin db.system.users.find() exit
※参考
- レプリカセットユーザ作成について
Enable Internal Authentication — MongoDB Manual - シャードユーザ作成について
Deploy a Sharded Cluster — MongoDB Manual