MongoDB ผู้ใช้และรหัสผ่านเริ่มต้นคืออะไร?


109

ฉันใช้สตริงการเชื่อมต่อเดียวกันในโลคัลและการผลิต เมื่อสตริงการเชื่อมต่อคือmongodb://localhost/mydb

ชื่อผู้ใช้และรหัสผ่านคืออะไร? ปลอดภัยไหมที่จะเก็บไว้ด้วยวิธีนี้

คำตอบ:


219

โดยค่าเริ่มต้น mongodb ไม่มีการควบคุมการเข้าถึงที่เปิดใช้งานดังนั้นจึงไม่มีผู้ใช้หรือรหัสผ่านเริ่มต้น

ในการเปิดใช้งานการควบคุมการเข้าถึงให้ใช้ตัวเลือกบรรทัดคำสั่ง--authหรือการตั้งค่าไฟล์คอนฟิกูเรชัน security.authorization

คุณสามารถใช้ขั้นตอนต่อไปนี้หรืออ้างถึงการเปิดใช้งานการตรวจสอบสิทธิ์ในเอกสาร 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"
    

19
หากผู้ใช้ถูกสร้างขึ้นด้วยบทบาท userAdminAnyDatabase จะไม่สามารถสร้างฐานข้อมูลใด ๆ ได้ ดังนั้นส่วนของบทบาทควรเป็น: บทบาท: [{role: "root", db: "admin"}]
georgeos


1
หากคุณต้องการค้นหาการใช้ dbpath: grep dbPath /etc/mongod.conf
rckd

14

นอกเหนือจากสิ่งที่ @Camilo Silva ได้กล่าวไว้แล้วหากคุณต้องการให้สิทธิ์เข้าถึงฟรีเพื่อสร้างฐานข้อมูลอ่านเขียนฐานข้อมูล ฯลฯ แต่คุณไม่ต้องการสร้างบทบาทรูทคุณสามารถเปลี่ยนขั้นตอนที่ 3 ได้ดังต่อไปนี้:

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

4

สำหรับ MongoDB ก่อนหน้า 2.6 คำสั่งในการเพิ่มผู้ใช้รูทคือaddUser(เช่น)

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

1
จนถึงรุ่น 2.6 db.addUserที่คุณมี ตั้งแต่ 2.6 และในเวอร์ชันปัจจุบัน 3.4.x คุณสามารถสร้างผู้ใช้ด้วยdb.CreateUserไฟล์.
Razvan Dumitru


2

นอกเหนือจากคำตอบที่ให้ไว้ก่อนหน้านี้ตัวเลือกหนึ่งคือทำตามแนวทาง 'localhost exception' เพื่อสร้างผู้ใช้รายแรกหากฐานข้อมูลของคุณเริ่มต้นด้วย access control ( --authสวิตช์) แล้ว ในการดำเนินการดังกล่าวคุณต้องมีการเข้าถึง localhost ไปยังเซิร์ฟเวอร์จากนั้นเรียกใช้:

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:

ข้อยกเว้น localhost อนุญาตให้คุณเปิดใช้งานการควบคุมการเข้าถึงจากนั้นสร้างผู้ใช้รายแรกในระบบ ด้วยข้อยกเว้น localhost หลังจากที่คุณเปิดใช้งานการควบคุมการเข้าถึงให้เชื่อมต่อกับอินเทอร์เฟซ localhost และสร้างผู้ใช้รายแรกในฐานข้อมูลผู้ดูแลระบบ ผู้ใช้รายแรกต้องมีสิทธิ์ในการสร้างผู้ใช้อื่นเช่นผู้ใช้ที่มีบทบาท userAdmin หรือ userAdminAnyDatabase การเชื่อมต่อโดยใช้ข้อยกเว้น localhost มีสิทธิ์เข้าถึงเพื่อสร้างผู้ใช้รายแรกบนฐานข้อมูลผู้ดูแลระบบเท่านั้น

นี่คือลิงค์ไปยังส่วนนั้นของเอกสาร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.