MongoDB quels sont l'utilisateur et le mot de passe par défaut?

103

J'utilise la même chaîne de connexion en local et en production. Lorsque la chaîne de connexion estmongodb://localhost/mydb

Quel est le nom d'utilisateur et le mot de passe? Est-il sûr de le garder ainsi?

Juan Pablo Fernandez
la source

Réponses:

210

Par défaut, mongodb n'a pas de contrôle d'accès activé, il n'y a donc pas d'utilisateur ou de mot de passe par défaut.

Pour activer le contrôle d'accès, utilisez l'option de ligne de commande --authou le paramètre du fichier de configuration security.authorization.

Vous pouvez utiliser la procédure suivante ou vous référer à Activation de l'authentification dans la documentation MongoDB.

Procédure

  1. Démarrez MongoDB sans contrôle d'accès.

    mongod --port 27017 --dbpath /data/db1
    
  2. Connectez-vous à l'instance.

    mongo --port 27017
    
  3. Créez l'administrateur d'utilisateurs.

    use admin
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  4. Redémarrez l'instance MongoDB avec le contrôle d'accès.

    mongod --auth --port 27017 --dbpath /data/db1
    
  5. Authentifiez-vous en tant qu'administrateur d'utilisateurs.

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \
      --authenticationDatabase "admin"
    
Camilo Silva
la source
17
Si l'utilisateur est créé avec le rôle userAdminAnyDatabase, il sera alors impossible de créer une base de données. Par conséquent, la section des rôles devrait être: roles: [{role: "root", db: "admin"}]
georgeos
4
Veuillez lier l'article original du manuel MongoDB
Nathan Cho
1
si vous voulez trouver le dbpath, utilisez: grep dbPath /etc/mongod.conf
rckd
13

En plus de ce que @Camilo Silva a déjà mentionné, si vous souhaitez donner un accès gratuit pour créer des bases de données, lire, écrire des bases de données, etc., mais que vous ne souhaitez pas créer un rôle racine, vous pouvez modifier la 3ème étape avec ce qui suit:

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)
Razvan Dumitru
la source
4

Pour MongoDB antérieur à 2.6, la commande pour ajouter un utilisateur root est addUser(par exemple)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
Noir
la source
1
Jusqu'à la version 2.6 que vous aviez db.addUser. À partir de 2.6 et dans la version actuelle 3.4.x, vous pouvez créer un utilisateur avec db.CreateUser.
Razvan Dumitru
1

En plus des réponses fournies précédemment, une option consiste à suivre l'approche 'exception localhost' pour créer le premier utilisateur si votre base de données est déjà démarrée avec le contrôle d'accès ( --authcommutateur). Pour ce faire, vous devez avoir un accès localhost au serveur, puis exécuter:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

Comme indiqué dans la documentation MongoDB:

L'exception localhost vous permet d'activer le contrôle d'accès, puis de créer le premier utilisateur du système. Avec l'exception localhost, après avoir activé le contrôle d'accès, connectez-vous à l'interface localhost et créez le premier utilisateur dans la base de données admin. Le premier utilisateur doit disposer de privilèges pour créer d'autres utilisateurs, par exemple un utilisateur avec le rôle userAdmin ou userAdminAnyDatabase. Les connexions utilisant l'exception localhost ont uniquement accès pour créer le premier utilisateur sur la base de données d'administration.

Voici le lien vers cette section de la documentation.

Fjut
la source