ฉันจะเชื่อมต่อกับเซิร์ฟเวอร์ mongo ระยะไกลจากเทอร์มินัล Mac OS ได้อย่างไร


101

ฉันต้องการวางลงใน mongo shell ในเทอร์มินัลบน MacBook ของฉัน อย่างไรก็ตามฉันสนใจที่จะเชื่อมต่อกับอินสแตนซ์ Mongo ที่ทำงานในระบบคลาวด์ (อินสแตนซ์ compose.io ผ่าน Heroku addon) ฉันมีชื่อรหัสผ่านโฮสต์พอร์ตและชื่อฐานข้อมูลจาก MongoDB URI:

mongodb://username:password@somewhere.mongolayer.com:10011/my_database

ฉันติดตั้ง mongodb บน MacBook โดยใช้ Homebrew ไม่ใช่เพราะฉันต้องการให้ Mongo ทำงานบน Mac ของฉัน แต่เพียงเพื่อเข้าถึงโปรแกรม mongo shell เพื่อเชื่อมต่อกับฐานข้อมูลระยะไกลนี้

อย่างไรก็ตามฉันไม่พบคำสั่งที่ถูกต้องในการเข้าถึงเชลล์แบบเต็มที่ฉันต้องการ ใช้คำแนะนำที่นี่http://docs.mongodb.org/manual/reference/program/mongo/ (ค้นหา "ระยะไกล") ฉันสามารถรับสิ่งที่ดูเหมือนการเชื่อมต่อได้ แต่ไม่ต้องให้ชื่อผู้ใช้หรือรหัสผ่านฉันไม่ได้ เชื่อมต่ออย่างเต็มที่ การเรียกใช้db.auth(username, password)คืนค่า 1 (ตรงข้ามกับ "auth failed" เมื่อฉันระบุชื่อผู้ใช้และรหัสผ่านไม่ถูกต้อง) แต่ฉันยังคงได้รับข้อความแสดงข้อผิดพลาด "ไม่ได้รับอนุญาต" เมื่อออกshow dbsคำสั่ง

คำตอบ:


170

คุณอาจจะเชื่อมต่อที่ดี show dbsแต่ไม่ได้มีสิทธิ์เพียงพอที่จะวิ่ง

คุณไม่จำเป็นต้องเรียกใช้ db.auth หากคุณผ่านการรับรองความถูกต้องในบรรทัดคำสั่ง:

mongo somewhere.mongolayer.com:10011/my_database -u username -p password

เมื่อคุณเชื่อมต่อคุณสามารถดูคอลเล็กชันได้หรือไม่?

> show collections

ถ้าเป็นเช่นนั้นและคุณไม่มีสิทธิ์ระดับผู้ดูแลระบบในฐานข้อมูลและไม่สามารถเรียกใช้ไฟล์ show dbs


ฉันสามารถเชื่อมต่อโดยใช้เทคนิคที่คุณอธิบาย อย่างไรก็ตามฉันไม่สามารถเรียกใช้คำสั่งใด ๆ เช่น "แสดงคอลเลกชัน" หรือ "แสดงผู้ใช้" ฉันกระตือรือร้นที่จะได้รับข้อผิดพลาด "ไม่ได้รับอนุญาตสำหรับการสืบค้นเกี่ยวกับ my_db.system.namespaces"
jononomo

1
ตกลงดังนั้น heroku สุ่มตั้งชื่อฐานข้อมูล mongo ของฉันเป็นชื่อที่แตกต่างจากที่ฉันใช้ใน dev ฉันคิดว่านั่นเป็นปัญหาของฉัน
jononomo

1
แต่ถ้าฉันมี authSource = admin ในท้ายที่สุด มันใช้ไม่ได้ --authenticationDatabase ไม่ช่วย
Roman Kazanovskyi

27017 เป็นพอร์ตเริ่มต้นแม้ว่า ในกรณีที่พอร์ตตัวอย่างไม่ทำงาน docs.mongodb.com/manual/reference/default-mongodb-port
เปลี่ยนแปลง


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