ฉันจะป้อน Mongo เป็น superuser หรือรีเซ็ตผู้ใช้ได้อย่างไร


29

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

คำตอบ:


38

หากคุณล็อคตัวเองไว้คุณต้องทำสิ่งต่อไปนี้:

  1. หยุดอินสแตนซ์ MongoDB ของคุณ
  2. ลบตัวเลือก --auth และ / หรือ --keyfile ออกจากการกำหนดค่า MongoDB ของคุณเพื่อปิดใช้งานการตรวจสอบสิทธิ์
  3. เริ่มอินสแตนซ์โดยไม่มีการรับรองความถูกต้อง
  4. แก้ไขผู้ใช้ตามต้องการ
  5. รีสตาร์ทอินสแตนซ์โดยเปิดใช้งานการตรวจสอบความถูกต้อง

การลบการรับรองความถูกต้องไม่เพียงพอแน่นอนขอบคุณ!
Andrei

14

ฉันมีปัญหาที่คล้ายกันเมื่อฉันสร้างผู้ใช้โดยไม่เพิ่ม superuser ก่อน ขั้นตอนต่อไปนี้ช่วยแก้ไขปัญหา:

  1. เปิดไฟล์กำหนดค่า MongoDB โดยใช้sudo( sudo vi mongodb.conf)
    ไฟล์สามารถพบได้ใน/etc/โฟลเดอร์
  2. "auth = true"คิดเห็น
  3. หยุดบริการ MongoDB ( sudo service mongod stop)
  4. เริ่มบริการ MongoDB ( sudo service mongod start)
  5. จากนั้นสร้าง superuser "root" โดยใช้คำสั่งด้านล่าง:

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

    สำหรับการอ้างอิงhttps://docs.mongodb.com/manual/reference/built-in-roles/#superuser-roles

  6. ย้อนกลับและ"auth=true"ไม่แสดงความคิดเห็น หยุดและเริ่ม / เริ่มบริการ mongodb ใหม่


ฉันไม่สามารถขอบคุณได้มากพอ ฉันพยายามหาสิ่งนี้เมื่อฉันอัพโหลดโครงการไปยังเซิร์ฟเวอร์ dev ขอบคุณมาก! :)
Woppi

เหมือนกัน ข้อความแสดงข้อผิดพลาดของเซิร์ฟเวอร์ไม่ช่วยอะไรได้อย่างน่าทึ่ง ขอขอบคุณ!
Tom

7

หากคุณใช้ชุดเรพลิกากับkeyfile

ความปลอดภัยระหว่างสมาชิกของชุดเรพลิกาโดยใช้ Internal Authentication

Keyfile ใช้สำหรับรับรองความถูกต้องในการจำลองแบบ

security:
  keyFile: <path-to-keyfile>
replication:
  replSetName: <replicaSetName>

คุณสามารถใช้คำสั่งนี้เพื่อเข้าสู่ระบบในฐานะผู้ดูแลระบบเพื่อ mongod:

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local

afterword คุณสามารถสร้างหรือแก้ไขผู้ใช้ admin ของคุณ

บทบาทภายใน

__systemMongoDB กำหนดบทบาทนี้ให้กับวัตถุผู้ใช้ที่เป็นตัวแทนของสมาชิกคลัสเตอร์เช่นสมาชิกชุดแบบจำลองและอินสแตนซ์ mongos บทบาทให้สิทธิ์แก่ผู้ถือเพื่อดำเนินการกับวัตถุใด ๆ ในฐานข้อมูล

อย่ากำหนดบทบาทนี้ให้กับวัตถุผู้ใช้ที่เป็นตัวแทนของแอปพลิเคชันหรือผู้ดูแลระบบของมนุษย์นอกเหนือจากในกรณีพิเศษ


คุณพบข้อมูลนี้ที่ไหน
octohedron

2

ตรวจสอบคำตอบสำหรับคำถามนี้พวกเขาอาจช่วยได้

https://stackoverflow.com/questions/20117104/mongodb-root-user

โดยทั่วไปหากคุณยังสามารถเข้าถึงเซิร์ฟเวอร์คุณอาจเข้าถึงAdminฐานข้อมูลได้

มีอีกมากในหน้านี้http://docs.mongodb.org/v2.4/reference/user-privileges/

โปรดทราบว่าเวอร์ชัน 2.6 เปลี่ยนวิธีการทำงานอย่างสมบูรณ์ สำหรับ 2.6 คุณจะต้องใช้เวลากับhttp://docs.mongodb.org/manual/security/


1
ดังที่ได้กล่าวไว้ในโพสต์ว่าเป็นข้อมูลเดียวที่ฉันสามารถค้นหาได้ ฉันไม่ได้รับอนุญาตให้ทำเช่นนั้น
Tony

0

คุณต้องหยุด Mongo ลบไฟล์ admin จากนั้นเริ่ม Mongo

sudo service mongod stop
mv /data/admin.* .
sudo service mongod start

2
นี่เป็นการทำลายฐานข้อมูลผู้ใช้ที่เป็นผู้ดูแลระบบและอนุญาตการเข้าถึงผ่าน "localHostExcetption" ไม่ใช่วิธีที่ดีในการจัดการผู้ใช้เมื่อคุณมีปัญหา
เดฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.