2015-01-05 4 views
12

मैं मोंगोडीबी से शुरू कर रहा हूं और मैं डीबीएस तक उपयोगकर्ता को पास/पास करना चाहता हूं। मैंने सोचा बना सकते हैं और व्यवस्थापक उपयोगकर्ता और प्रमाणन सक्रिय साथ MongoDB शुरू करने के लिए था, यह मेरा बनाए गए उपयोगकर्ता है:त्रुटि: उपयोगकर्ता को नहीं जोड़ा जा सका: आदेश निष्पादित करने के लिए परीक्षण पर अधिकृत नहीं है {createUser:

db.getUser("admin") 
{ 
     "_id" : "admin.admin", 
     "user" : "admin", 
     "db" : "admin", 
     "roles" : [ 
       { 
         "role" : "dbAdminAnyDatabase", 
         "db" : "admin" 
       }, 
       { 
         "role" : "clusterAdmin", 
         "db" : "admin" 
       } 
     ] } 
} 

उसके बाद, मैं निम्न कमांड के साथ उपयोगकर्ताओं को बनाने का प्रयास करें:

use newdb 
db.createUser(
    { 
    user: "newuser", 
    pwd: "12345678", 
    roles: [ { role: "readWrite", db: "newdb" } ] 
    } 
) 

लेकिन मैं यह त्रुटि आई:

Error: couldn't add user: not authorized on newdb to execute command { createUser: "newuser", pwd: "xxx", roles: [ { role: "readWrite", db: "newdb" } ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 30000.0 } } at src/mongo/shell/db.js:1004

मैं इसके बारे में googled है लेकिन वहाँ केवल दो परिणाम, चीनी और अन्य संबंधित नहीं पर एक हैं, तो मैं एक छोटे से भटक गया हूँ। कोई उपाय ? पहले से

$mongo --port 27017 -u adminUser -p adminPass --authenticationDatabase admin 

धन्यवाद: यह मेरी व्यवस्थापक उपयोगकर्ता की तरह विशेषाधिकार नहीं है, मैं निम्न आदेश के साथ MongoDB के लिए पहुँच लग रहा है।

+1

आपने व्यवस्थापक उपयोगकर्ता में 'userAdmin' /' userAdminAnyDatabase' भूमिका शामिल नहीं की है। 'dbAdminAnyDatabase' और 'क्लस्टरएडमिन' में उपयोगकर्ता प्रबंधन विशेषाधिकार शामिल नहीं हैं। – wdberkeley

+0

वह समस्या थी। खैर, यह mongodb के साथ मेरा पहला मुठभेड़ था :) बहुत बहुत धन्यवाद! – brb

उत्तर

4

कमांड कहता है, आपने व्यवस्थापक उपयोगकर्ता और पासवर्ड बनाया है।

db.getUser("admin")  
{  
     "_id" : "admin.admin", 
     "user" : "admin",  
     "db" : "admin",  
     "roles" : [  
       {  
         "role" : "dbAdminAnyDatabase",  
         "db" : "admin"  
       },  
       {  
         "role" : "clusterAdmin",  
         "db" : "admin"  
       }  
     ] }  
}  

एक बार जब आप व्यवस्थापक उपयोगकर्ता और पासवर्ड बनाते हैं, मोंगो आप सामान्य एक व्यवस्थापक उपयोगकर्ता जो आपने पहले प्रवेश के लिए उपयोग के रूप में किसी भी स्कीमा अद्यतन करने के लिए अनुमति नहीं दी जाएगी।

नए उपयोगकर्ताओं को बनाने या कोई भी अपडेट करने के लिए नव निर्मित व्यवस्थापक उपयोगकर्ता और पासवर्ड का उपयोग करें। यह काम करना चाहिए।

0

आपको वर्तमान मोंगोड प्रक्रिया से बाहर निकलना चाहिए और बिना पैरामीटर - ऑथ के इसे दोबारा शुरू करना चाहिए।

टर्मिनल प्रकार पर:

mongod बाद mongod की प्रक्रिया शुरू कर हो जाता है तो आप मोंगो शेल कमांड को चलाने के लिए नए टर्मिनल टैब खोल सकते हैं:

mongo --shell 
use new_your_database 
db.createUser(
    { 
    user: "mongo_admin", 
    pwd: "mongo_admin", 
    roles: [ "readWrite", "dbAdmin" ] 
    } 
) 

इसे सफलतापूर्वक किया जाना चाहिए ....

5

mongod की चल उदाहरण mongod --config /usr/local/etc/mongod.conf --auth

तोबिना शुरू करना बंद करो तरह mongod --config /usr/local/etc/mongod.conf

फिर अपने भूमिकाओं like

db.updateUser("admin",{roles : ["userAdminAnyDatabase","userAdmin","readWrite","dbAdmin","clusterAdmin","readWriteAnyDatabase","dbAdminAnyDatabase"]});

अद्यतन अब फिर से --auth साथ mongod शुरू करने और प्रयास करें।


विचार यह है कि आपको उपर्युक्त सभी ROLES के साथ "व्यवस्थापक" डेटाबेस के तहत उपयोगकर्ता बनाना है।

लेकिन यह उपयोगकर्ता अन्य डेटाबेस का हिस्सा नहीं है।तो एक बार आप व्यवस्थापक उपयोगकर्ता, बनाया

तो

SERVER: mongod --config /usr/local/etc/mongod.conf --auth

CLIENT: ./mongodb/bin/mongo localhost:27017/admin -u adminUser -p 123456

use APPLICATION_DB 

फिर से इस APPLICATION_DB लिए एक नया उपयोगकर्ता (जैसे कि APP_USER) बनाने कि व्यवस्थापक उपयोगकर्ता के रूप में प्रवेश,। इस एप्लिकेशन के लिए इस बार आपको केवल "डीबीओनर" भूमिका की आवश्यकता है।

db.createUser({user:"test", pwd:"test", roles:['dbOwner']}) 

अब आपके एप्लिकेशन को इस APP_USER और APP_DB का उपयोग करना होगा।

संबंधित मुद्दे

 संबंधित मुद्दे