シャード+レプリカセット構成でユーザ作成をする場合は、順番は多少前後してもよさそうだけど、まずレプリカセットでユーザを作成したあと、シャードでユーザを作成するのがよさそう
前提条件
- レプリカセットは構築済み
- シャード構成は構築済み
- 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
※参考