2016-08-12 9 views
26

मैं स्थानीय और उत्पादन पर एक ही कनेक्शन स्ट्रिंग का उपयोग कर रहा हूं। जब कनेक्शन स्ट्रिंग mongodb है: // localhost/mydbMongoDB डिफ़ॉल्ट उपयोगकर्ता और पासवर्ड क्या हैं?

उपयोगकर्ता और पासवर्ड क्या हैं? क्या यह इस तरह से सुरक्षित है?

उत्तर

65

डिफ़ॉल्ट रूप से mongodb में कोई एक्सेस नियंत्रण सक्षम नहीं है, इसलिए कोई डिफ़ॉल्ट उपयोगकर्ता या पासवर्ड नहीं है।

एक्सेस नियंत्रण सक्षम करने के लिए, कमांड लाइन विकल्प --auth या सुरक्षा। प्राधिकरण कॉन्फ़िगरेशन फ़ाइल सेटिंग का उपयोग करें।

आप निम्नलिखित प्रक्रिया का उपयोग कर सकते हैं या MongoDB दस्तावेज़ों में Enabling Auth देखें।

प्रक्रिया

  1. अभिगम नियंत्रण के बिना प्रारंभ MongoDB।

    mongod --port 27017 --dbpath /data/db1 
    
  2. उदाहरण से कनेक्ट करें।

    mongo --port 27017 
    
  3. उपयोगकर्ता व्यवस्थापक बनाएँ।

    use admin 
    db.createUser(
        { 
        user: "myUserAdmin", 
        pwd: "abc123", 
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
        } 
    ) 
    
  4. एक्सेस नियंत्रण के साथ मोंगोडीबी इंस्टेंस को फिर से शुरू करें।

    mongod --auth --port 27017 --dbpath /data/db1 
    
  5. उपयोगकर्ता व्यवस्थापक के रूप में प्रमाणित करें।

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \ 
        --authenticationDatabase "admin" 
    
+4

यदि उपयोगकर्ता भूमिका उपयोगकर्ताAdminAnyDatabase के साथ बनाया गया है, तो किसी भी डेटाबेस को बनाना असंभव होगा। इसलिए भूमिका अनुभाग होना चाहिए: भूमिकाएं: [{भूमिका: "रूट", डीबी: "व्यवस्थापक"}] – georgeos

+2

कृपया [मोंगोडीबी मैनुअल से मूल पोस्ट] लिंक करें (https://docs.mongodb.com/manual/tutorial/enable - प्रमाणीकरण /) –

1

MongoDB पहले की तुलना में 2.6 के लिए, एक जड़ उपयोगकर्ता को जोड़ने का आदेश addUser (जैसे)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]}) 
+0

टाइपरर: db.addUser कोई फ़ंक्शन नहीं है –

+0

संस्करण 2.6 तक आपके पास 'db.addUser' था। 2.6 और वर्तमान संस्करण 3.4.x में आप एक उपयोगकर्ता को 'db.CreateUser' के साथ बना सकते हैं। –

2

क्या @Camilo सिल्वा पहले ही उल्लेख के साथ इसके अलावा, अगर आप चाहते हैं दे रहा है डेटाबेस बनाने, पढ़ने, लिखने के डेटाबेस आदि के लिए मुफ्त पहुंच, लेकिन आप रूट भूमिका नहीं बनाना चाहते हैं, आप निम्न के साथ तीसरा चरण बदल सकते हैं:

use admin 
db.createUser(
    { 
    user: "myUserAdmin", 
    pwd: "abc123", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
      { role: "dbAdminAnyDatabase", db: "admin" }, 
      { role: "readWriteAnyDatabase", db: "admin" } ] 
    } 
) 
संबंधित मुद्दे