web-dev-qa-db-fra.com

Créer un superutilisateur dans Mongo

J'essaie de créer un utilisateur dans mongo qui peut faire n'importe quoi dans n'importe quel db.

Selon le guide, j'ai créé un nouvel administrateur: http://docs.mongodb.org/manual/tutorial/add-user-administrator

Voici le code:

use admin
db.addUser( { user: "try1",
              pwd: "hello,
              roles: [ "userAdminAnyDatabase" ] } )

Ensuite, j'ai arrêté mongo, activé l'authentification et redémarré mongo.

Ensuite, j'ai essayé de créer une base de données avec son utilisateur.

Selon ce guide: http://www.mkyong.com/mongodb/how-to-create-database-or-collection-in-mongodb/

use fragola 
db.users.save( {username:"fragolino"} )

Et je reçois ceci: "non autorisé pour l'insertion sur fragola.users"

Est-ce que quelqu'un peut m'aider?

41
Simo

Le rôle userAdminAnyDatabase donne à l'utilisateur la possibilité de créer des utilisateurs et de leur attribuer des rôles arbitraires. De ce fait, cet utilisateur a le pouvoir de faire quoi que ce soit sur la base de données, car il peut donner à quiconque une autorisation (y compris lui-même).

Cependant, le rôle userAdminAnyDatabase ne permet pas à lui seul de faire autre chose que d'attribuer des droits arbitraires à des utilisateurs arbitraires. Pour réellement faire quelque chose dans la base de données, cet utilisateur doit avoir les rôles supplémentaires suivants:

readWriteAnyDatabase
dbAdminAnyDatabase
clusterAdmin

Un utilisateur qui a les trois droits ci-dessus etuserAdminAnyDatabase est un vrai super-utilisateur et peut tout faire.

53
drmirror

à partir de docs.mongodb.org-superuser-roles

Permet d'écrire une réponse qui semble simple et aussi simple à mettre en œuvre

Pas :

1 : Sudo apt-get install mongodb-org - dans le nouveau terminal

2: Sudo mongod --port 27017 --dbpath /var/lib/mongodb

3: mongo --port 27017 - dans le nouveau terminal

4: use admin

5: Comme @drmirror l'a dit, un utilisateur doit avoir tous les 4 rôles pour être superutilisateur

Pour Mongo version 2.

db.createUser(
{
    user: "tom",
    pwd: "jerry",
    roles: [
              { role: "userAdminAnyDatabase", db: "admin" },
              { role: "readWriteAnyDatabase", db: "admin" },
              { role: "dbAdminAnyDatabase", db: "admin" },
              { role: "clusterAdmin", db: "admin" }
           ]
})

Pour Mongo version 3.

db.createUser(
   {
       user: "tom", 
       pwd: "jerry", 
       roles:["root"]
   })

6: Sudo /etc/init.d/mongod stop OR Sudo service mongod stop - dans le nouveau terminal

7 : Sudo /etc/init.d/mongod start OR Sudo service mongod start

8: restart your pc

9: Sudo mongod --auth --port 27017 --dbpath /var/lib/mongodb - dans le nouveau terminal

dix: mongo --port 27017 -u "tom" -p "jerry" --authenticationDatabase "admin" - dans le nouveau terminal

Remarque : l'étape 10 est l'étape la plus importante.

cela donnera une sortie sur le terminal comme

MongoDB Shell version: 2.6.11
connecting to: 127.0.0.1:27017/test
>
55
vijay