mongodbをセットアップするときはいつでも、ロールuserAdminAnyDatabaseを持つ管理者ユーザーを作成する必要があります。mongodが--authで開始されているかどうかに関係なく、このユーザーを作成できます。以下のコマンドでこのユーザーを作成できます。
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
この後、認証がオンになっていない場合は、-authフラグを指定してmongodを実行するか、mongod.confで認証をオンにして、mongodサーバーを再起動します。
次に、管理者ユーザーを使用して以下のコマンドでmongoシェルにログインします
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
データベースに移動し、読み取り/書き込み権限を持つユーザーを作成します。
use myapplication
db.createUser(
{
user: "myTester",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "myapplication" }]
}
)
これで、myTesterユーザーを使用してmyapplicationデータベースの読み取り/書き込みが可能になり、新しいデータベースを作成するたびに、myUserAdminユーザーでmongoシェルを起動し、新しいデータベースの新しいユーザーを作成できます。
mongodbでは、単一のユーザーを作成して、すべてのデータベースに対するすべてのアクセス許可をユーザーに与えることもできますが、そうすべきではありません。
さらに調査したい場合は、以下のリンクを確認してください。 https://docs.mongodb.com/v3.2/tutorial/ enable-authentication /
誤ってmongodbをロックした場合は、mongod.confファイルからの認証をオフにして、データにアクセスできます。