MongoDB डिफ़ॉल्ट उपयोगकर्ता और पासवर्ड क्या हैं?


102

मैं स्थानीय और उत्पादन पर एक ही कनेक्शन स्ट्रिंग का उपयोग कर रहा हूं। जब कनेक्शन स्ट्रिंग हैmongodb://localhost/mydb

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

जवाबों:


207

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

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

आप निम्नलिखित प्रक्रिया का उपयोग कर सकते हैं या MongoDB डॉक्स में प्रमाणीकरण सक्षम कर सकते हैं ।

प्रक्रिया

  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. एक्सेस कंट्रोल के साथ MongoDB इंस्टेंस को फिर से शुरू करें।

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

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

17
यदि उपयोगकर्ता भूमिका userAdminAnyDatabase से बनाया गया है, तो कोई भी डेटाबेस बनाना असंभव होगा। इसलिए भूमिकाओं का भाग होना चाहिए: भूमिकाएँ: [{भूमिका: "जड़", db: "व्यवस्थापन"}]
जार्जियोस


1
अगर आप dbpath का उपयोग करना चाहते हैं: grep dbPath /etc/mongod.conf
rckd

13

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

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
             { role: "dbAdminAnyDatabase", db: "admin" }, 
             { role: "readWriteAnyDatabase", db: "admin" } ]
  }
)

4

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

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

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


1

पहले दिए गए जवाबों के अलावा, पहला विकल्प यह है कि 'dbhoho' अपवाद का उपयोग करके पहला उपयोगकर्ता बनाएं, अगर आपका db पहले ही एक्सेस कंट्रोल ( --authस्विच) के साथ शुरू हो गया है । ऐसा करने के लिए, आपको सर्वर पर लोकलहोस्ट एक्सेस की आवश्यकता होगी और फिर चलाएं:

mongo
use admin
db.createUser(
 {
     user: "user_name",
     pwd: "user_pass",
     roles: [
           { role: "userAdminAnyDatabase", db: "admin" },
           { role: "readWriteAnyDatabase", db: "admin" },
           { role: "dbAdminAnyDatabase", db: "admin" }
        ]
 })

जैसा कि MongoDB प्रलेखन में कहा गया है:

लोकलहोस्ट अपवाद आपको एक्सेस कंट्रोल को सक्षम करने और फिर सिस्टम में पहला उपयोगकर्ता बनाने की अनुमति देता है। स्थानीयहोस्ट अपवाद के साथ, आप अभिगम नियंत्रण सक्षम करने के बाद, स्थानीयहोस्ट इंटरफ़ेस से कनेक्ट करें और व्यवस्थापक डेटाबेस में पहला उपयोगकर्ता बनाएं। पहले उपयोगकर्ता के पास अन्य उपयोगकर्ता बनाने के लिए विशेषाधिकार होना चाहिए, जैसे कि userAdmin या userAdminAnyDatabase भूमिका वाला उपयोगकर्ता। लोकलहोस्ट अपवाद का उपयोग करने वाले कनेक्शनों तक केवल व्यवस्थापक डेटाबेस पर पहला उपयोगकर्ता बनाने के लिए पहुंच है।

यहाँ डॉक्स के उस सेक्शन का लिंक दिया गया है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.