web-dev-qa-db-fra.com

Non autorisé pour une requête sur admin.system.namespaces sur mongodb

Je commence une nouvelle instance mongo, crée un utilisateur, l'autorise, mais lorsque j'exécute "show collections", le système indique que l'ID n'est pas autorisé. Je ne sais pas pourquoi?

# mongo admin
MongoDB Shell version: 2.4.3
connecting to: admin
Server has startup warnings:
Thu May 23 18:23:56.735 [initandlisten]
Thu May 23 18:23:56.735 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
Thu May 23 18:23:56.735 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
Thu May 23 18:23:56.735 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
Thu May 23 18:23:56.735 [initandlisten]
> db = db.getSiblingDB("admin")
admin
> db.addUser({user:"sa",pwd:"sa",roles:["userAdminAnyDatabase"]})
{
        "user" : "sa",
        "pwd" : "75692b1d11c072c6c79332e248c4f699",
        "roles" : [
                "userAdminAnyDatabase"
        ],
        "_id" : ObjectId("519deedff788eb914bc429b5")
}
> show collections\
Thu May 23 18:26:50.103 JavaScript execution failed: SyntaxError: Unexpected token ILLEGAL
> show collections
Thu May 23 18:26:52.418 JavaScript execution failed: error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 16550
} at src/mongo/Shell/query.js:L128
> db.auth("sa","sa")
1
> show collections
Thu May 23 18:27:22.307 JavaScript execution failed: error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 16550
} at src/mongo/Shell/query.js:L128
13
user1208081

J'ai eu le même problème, mais j'ai trouvé ce tutoriel et il m'a aidé.

http://www.hacksparrow.com/mongodb-add-users-and-authenticate.html

utilisation:

db.addUser('sa', 'sa')

au lieu de

db.addUser({user:"sa",pwd:"sa",roles:["userAdminAnyDatabase"]})
{
        "user" : "sa",
        "pwd" : "75692b1d11c072c6c79332e248c4f699",
        "roles" : [
                "userAdminAnyDatabase"
        ],
        "_id" : ObjectId("519deedff788eb914bc429b5")
}
13
Vityka

Comme Robert le dit, les utilisateurs admin ne disposent que de droits sur admin, pas sur l'écriture dans les bases de données . Il y a différentes manières. J'ai choisi la manière dbOwner.

(J'utilise Ubuntu Server, Mongo 2.6.3 et Robomongo)

Donc, pour ce faire, commencez par créer votre administrateur comme le dit mongo:

tapez mongo dans votre shell linux

et ces commandes dans le shell mongo:

use admin
db.createUser({user:"mongoadmin",pwd:"chooseyouradminpassword",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
db.auth("mongoadmin","chooseyouradminpassword")
exit

éditez le fichier mongo conf avec:

nano /etc/mongod.conf

Vous pouvez utiliser vi si nano n'est pas installé.

activer l'authentification en décommentant/en ajoutant la ligne auth=true

si vous voulez utiliser Robomongo depuis une autre machine, changez la ligne bind_ip=127.0.0.1 par bind_ip=0.0.0.0 (peut-être devriez-vous ajouter plus de protection en production).

tapez linux Shell:

service mongod restart
mongo

Et en mongo Shell:

use admin
db.auth("mongoadmin","pwd:"chooseyouradminpassword")
use doomnewdatabase
db.createUser({user:"Doom",pwd:"chooseyourdoompassword",customData:{desc:"Just me as I am"},roles : [{role:"dbOwner",db:"doomnewdatabase"}]})
db.auth("Doom","chooseyourdoompassword")
show collections

(customData n'est pas obligatoire).

Si vous voulez essayer si cela fonctionne, tapez ceci dans le shell mongo:

db.products.insert( { item: "card", qty: 15 } )
show collections
db.products.find()

Bonne chance ! J'espère que cela vous aidera et aidera les autres!

J'ai chercher ces informations pendant des heures.

8
doom

J'ai eu le même problème et voici comment je l'ai résolu:

db = db.getSiblingDB('admin')
db.addUser( 
    { user: "mongoadmin", 
      pwd: "adminpass", 
      roles: ['clusterAdmin', 'userAdminAnyDatabase', 'readAnyDatabase'] } )
7
Nick De Greek

Pour MongoDB version 2.6, utilisez: 

db.createUser(
{
   user: "testUser"
   pwd: "password",
   roles: [{role: "readWrite", db:"yourdatabase"}]
})

Voir le docs

3
hasib32

Je l'ai résolu comme ça Pour mongoDB 2.6 + actuellement 3

db.createUser(
  {
    user: "username",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)

notez que pour role classé au lieu de userAdminAnyDatabase nous utilisons root

1
Mohsen Shakiba

J'essayerais d'accorder le rôle de lecture à l'utilisateur. userAdminAnyDatabase permet d'administrer des utilisateurs.

0
Robert Gannon