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?
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?
Réponses:
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 --auth
ou 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.
Démarrez MongoDB sans contrôle d'accès.
mongod --port 27017 --dbpath /data/db1
Connectez-vous à l'instance.
mongo --port 27017
Créez l'administrateur d'utilisateurs.
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 --port 27017 --dbpath /data/db1
Authentifiez-vous en tant qu'administrateur d'utilisateurs.
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
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" } ]
}
)
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"]})
db.addUser
. À partir de 2.6 et dans la version actuelle 3.4.x, vous pouvez créer un utilisateur avec db.CreateUser
.
db.createUser
;) ( docs.mongodb.com/manual/reference/method/db.createUser )
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 ( --auth
commutateur). 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.