Também conhecido como mongo, é um banco de dados NOSQL muito utilizado nos dias de hoje, ele é rápido e escalável e tem duas versões mais utilizadas, 2.6 e 3.7+
Normalmente não precisa de autenticação, mas vale a pena saber configurar quando precisar né? Vale a pena lembrar que o mongo usa um banco de dados próprio para controle de usuário, esse banco se chama admin, portanto vamos configurar os usuários nesse banco!
db.users.insertMany( [
{ name: "Ash", age: -1, login: [{ duration: 1, date: 23/10/1990}, { duration: 2, date: 1/7/1997}], active: true },
{ name: "Misty", age: 16, login: [{ duration: 2, date: 23/10/1877}, { duration: 3, date: 2/6/1995}], active: false },
{ name: "Brock", age: 18, login: [{ duration: 3, date: 23/10/2021}, { duration: 4, date: 3/7/1992}], active: true },
{ name: "Tomura", age: 16, login: [{ duration: 4, date: 23/10/2134}, { duration: 5, date: 4/8/1990}], active: true },
{ name: "Midoriya", age: 16, login: [{ duration: 5, date: 23/10/222}, { duration: 6, date: 5/9/1990}], active: false }
]);
Simples
> db.users.find({name: "Ash"})
{ "_id" : ObjectId("61463f04fe96cdfe7484fbaf"), "name" : "Ash", "age" : -1, "login" : [ { "duration" : 1, "date" : 0.0011557788944723617 }, { "duration" : 1, "date" : 0.00007153587524143358 } ], "active" : true }
> db.users.find({name: "Ash"}, {name: 1})
{ "_id" : ObjectId("61463f04fe96cdfe7484fbaf"), "name" : "Ash" }
db.users.find({active: true}, {name: 1})
{ "_id" : ObjectId("61463f7c436eece3785cb410"), "name" : "Ash" }
{ "_id" : ObjectId("61463f7c436eece3785cb412"), "name" : "Brock" }
{ "_id" : ObjectId("61463f7c436eece3785cb413"), "name" : "Tomura" }
Um pouco mais complexo
db.users.find({"login.duration": {$gt: 3, $lt: 5}, age: {$gt: 17}}).pretty()
{
"_id" : ObjectId("61463f7c436eece3785cb412"),
"name" : "Brock",
"age" : 18,
"login" : [
{
"duration" : 3,
"date" : 0.0011380504700643245
},
{
"duration" : 4,
"date" : 0.00021514629948364886
}
],
"active" : true
}
> use admin
switched to db admin
db.createUser({user:"4dm1n", pwd:"4dm1n", roles: [{role: "root", db: "admin"}]})
Successfully added user: {
"user" : "4dm1n",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
Testando
mongo -u4dm1n -p4dm1n --authenticationDatabase admin
MongoDB shell version: 2.6.10
connecting to: test
> use admin
switched to db admin
> db.getUsers()
[ ]
> db.createUser({user:"r00t", pwd:"r00t", roles: [{role: "root", db: "admin"}]})
Successfully added user: {
"user" : "r00t",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
Testando certo e testando errado:
root@4d60e75e30f3:/# mongo -u4dm1n -p4dm1n --authenticationDatabase admin
MongoDB shell version v3.7.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.7.3
2018-04-03T23:45:08.660+0000 E QUERY [js] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1626:20
@(auth):6:1
@(auth):1:2
exception: login failed
root@4d60e75e30f3:/# mongo -ur00t -pr00t --authenticationDatabase admin
MongoDB shell version v3.7.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.7.3