Je souhaite configurer l'authentification du nom d'utilisateur et du mot de passe pour mon instance MongoDB, afin que tout accès distant demande le nom d'utilisateur et le mot de passe. J'ai essayé le tutoriel du site MongoDB et ai fait les choses suivantes:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Après cela, je suis sorti et j'ai de nouveau couru le mongo. Et je n'ai pas besoin de mot de passe pour y accéder. Même si je me connecte à la base de données à distance, je ne suis pas invité à entrer le nom d'utilisateur et le mot de passe.
UPDATE Voici la solution que j'ai finalement utilisée
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ Sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
Le nom d'utilisateur et le mot de passe fonctionneront de la même manière pour mongodump
et mongoexport
.
Vous devez démarrer mongod
avec l'option --auth
après avoir configuré l'utilisateur.
Depuis le site MongoDB:
Exécutez la base de données (processus Mongod) avec l'option
--auth
pour activer la sécurité. Vous devez soit avoir ajouté un utilisateur à la base de données d'administration avant de démarrer le serveur avec--auth
, soit ajouter le premier utilisateur à partir de l'interface localhost.
Wow tellement de réponses compliquées/confuses ici.
C'est à partir de v3.4 .
1) Démarrez MongoDB sans contrôle d’accès.
mongod --dbpath /data/db
2) Connectez-vous à l'instance.
mongo
3) Créez l'utilisateur.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
4) Arrêtez l'instance MongoDB et redémarrez-la avec le contrôle d'accès.
mongod --auth --dbpath /data/db
5) Connectez-vous et authentifiez-vous en tant qu'utilisateur.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
C'est vraiment simple. Je vais faire la bêtise suivante https://docs.mongodb.com/manual/tutorial/enable-authentication/
Si vous voulez en savoir plus sur ce que font réellement les rôles, lisez-en plus ici: https://docs.mongodb.com/manual/reference/built-in-roles/
1) Démarrez MongoDB sans contrôle d’accès.
mongod --dbpath /data/db
2) Connectez-vous à l'instance.
mongo
3) Créez l'administrateur de l'utilisateur. Ce qui suit crée un utilisateur administrateur dans la base de données d'authentification admin
. L'utilisateur est un dbOwner
sur la base de données some_db
et PAS sur la base de données admin
, il est important de s'en souvenir.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Ou si vous voulez créer un administrateur qui est administrateur sur une base de données:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) Arrêtez l'instance MongoDB et redémarrez-la avec le contrôle d'accès.
mongod --auth --dbpath /data/db
5) Connectez-vous et authentifiez-vous en tant qu'administrateur de l'utilisateur vers la base de données d'authentification admin
, PAS avec la base de données d'authentification some_db
. L'utilisateur administrateur a été créé dans la base de données d'authentification admin
, l'utilisateur n'existe pas dans la base de données d'authentification some_db
.
use admin
db.auth("myDbOwner", "abc123")
Vous êtes maintenant authentifié en tant que dbOwner
sur la base de données some_db
. Alors maintenant, si vous souhaitez lire/écrire/faire des choses directement vers la base de données some_db
, vous pouvez le changer.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Plus sur les rôles: https://docs.mongodb.com/manual/reference/built-in-roles/
Si vous souhaitez créer des utilisateurs supplémentaires qui ne sont pas des administrateurs d'utilisateurs et qui sont juste des utilisateurs normaux, continuez à lire ci-dessous.
6) Créer un utilisateur normal. Cet utilisateur sera créé dans la base de données d'authentification some_db
ci-dessous.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
7) Quittez le shell mongo, reconnectez-vous, authentifiez-vous en tant qu'utilisateur.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Commencez par commenter la ligne commençant par #auth=true
dans votre fichier de configuration Mongod (chemin par défaut /etc/mongo.conf
). Cela activera l'authentification pour mongodb.
Ensuite, redémarrez mongodb: Sudo service mongod restart
Cette réponse concerne Mongo 3.2.1 Référence
Terminal 1:
$ mongod --auth
Terminal 2:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
si vous voulez ajouter sans rôles (facultatif):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
pour vérifier si authentifié ou non:
db.auth("admin_name", "1234")
cela devrait vous donner:
1
autre :
Error: Authentication failed.
0
Voici un code javascript pour ajouter des utilisateurs.
Démarrer mongod
avec --auth = true
Accédez à la base de données d'administration depuis le shell mongo et transmettez le fichier javascript.
mongo admin "Nomfichier.js"
"Nom de fichier.js"
// Adding admin user
db.addUser("admin_username", " admin_password");
// Authenticate admin user
db.auth("admin_username ", " admin_password ");
// use database code from Java script
db = db.getSiblingDB("newDatabase");
// Adding newDatabase database user
db.addUser("database_username ", " database_ password ");
Maintenant que l’ajout d’utilisateurs est terminé, nous pouvons vérifier l’accès à la base de données à partir de mongo Shell.
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
Editez le fichier de paramètres mongo;
Sudo nano /etc/mongod.conf
Ajouter la ligne:
security.authorization : enabled
Redémarrer le service
Sudo service mongod restart
Cordialement
Commencez par exécuter mongoDB sur un terminal en utilisant
mongod
exécutez maintenant mongo Shell utilisez les commandes suivantes
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Redémarrez l'instance MongoDB avec le contrôle d'accès.
mongod --auth
Maintenant, authentifiez-vous à partir de la ligne de commande en utilisant
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Je l'ai lu de
https://docs.mongodb.com/manual/tutorial/enable-authentication/
Création d'un utilisateur avec mot de passe pour une base de données spécifique afin de sécuriser l'accès à la base de données:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
Vous aurez besoin de passer à la base de données sur laquelle vous voulez que l'utilisateur (pas la base d'administration) ...
use mydatabase
Voir ce post pour plus d'aide ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
mongod --auth
en cas de Linux, vous pouvez modifier le fichier /etc/mongod.conf
pour ajouter security.authorization : enabled
, puis le redémarrer. le service mongdmongo -u "admin" -p "admin123" --authenticationDatabase "admin"
. C'est çaVous pouvez vérifier cet article pour entrer dans plus de détails et apprendre à vous y connecter en utilisant mangouste.
Ces étapes ont fonctionné sur moi:
La meilleure pratique pour se connecter à mongoDB est la suivante:
Après l'installation initiale,
use admin
Puis exécutez le script suivant pour créer un utilisateur admin
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
le script suivant créera l'utilisateur admin pour la base de données.
connectez-vous au fichier db.admin en utilisant
mongo -u YourUserName -p YourPassword admin
Après la connexion, vous pouvez créer le numéro N de la base de données avec les mêmes identifiants d’administrateur ou différents en répétant les étapes 1 à 3.
Cela vous permet de créer différents utilisateurs et mots de passe pour les différentes collections que vous créez dans MongoDB.
Voici ce que j'ai fait sur Ubuntu 18.04:
$ Sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({ user: "root", pwd: "rootpw", roles: [ "root" ] }) // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({ user: "lefa", pwd: "lefapw", roles: [ { role: "dbOwner", db: "lefa" } ] }) // admin of a db
> exit
$ Sudo vim /etc/mongodb.conf
auth = true
$ Sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase "lefa"
> use lefa
> exit
après avoir créé un nouvel utilisateur, n'oubliez pas de donner l'autorisation grant
read/write/root
à l'utilisateur. vous pouvez essayer le
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])