2014-11-08 14 views
67

Tôi muốn thả vào vỏ mongo trong thiết bị đầu cuối trên MacBook của tôi. Tuy nhiên, tôi quan tâm đến việc kết nối với một cá thể Mongo đang chạy trên đám mây (ví dụ compose.io qua addon Heroku). Tôi có tên, mật khẩu, máy chủ, cổng và tên cơ sở dữ liệu từ MongoDB URI:làm thế nào tôi có thể kết nối với một máy chủ mongo từ xa từ thiết bị đầu cuối Mac OS

mongodb://username:[email protected]:10011/my_database 

Tôi đã cài đặt MongoDB trên MacBook của tôi sử dụng Homebrew không phải vì tôi muốn Mongo chạy trên máy Mac của tôi, nhưng chỉ để có được quyền truy cập vào chương trình vỏ mongo để kết nối với cơ sở dữ liệu từ xa này.

Tuy nhiên, tôi không thể tìm thấy đúng lệnh để giúp tôi truy cập trình bao đầy đủ mà tôi muốn. Sử dụng các hướng dẫn tìm thấy ở đây http://docs.mongodb.org/manual/reference/program/mongo/ (tìm kiếm "từ xa") Tôi có thể nhận được kết nối giống như kết nối nhưng không cung cấp tên người dùng hoặc mật khẩu của tôi, tôi không được kết nối hoàn toàn. Chạy db.auth(username, password) trả về 1 (trái ngược với "auth failed" khi tôi cung cấp tên người dùng và mật khẩu không chính xác), nhưng tôi tiếp tục nhận được thông báo lỗi "trái phép" khi phát lệnh show dbs.

Trả lời

123

Có thể bạn đang kết nối tốt nhưng không có đủ đặc quyền để chạy show dbs.

Bạn không cần phải chạy db.auth nếu bạn vượt qua auth trong dòng lệnh:

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

Khi bạn kết nối là bạn có thể nhìn thấy bộ sưu tập?

> show collections 

Nếu vậy tất cả là tốt và bạn chỉ cần không có đặc quyền quản trị cơ sở dữ liệu và không thể chạy các show dbs

+0

Tôi có thể kết nối bằng kỹ thuật bạn mô tả. Tuy nhiên, tôi không thể chạy bất kỳ lệnh nào, chẳng hạn như "hiển thị bộ sưu tập" hoặc "hiển thị người dùng". Tôi muốn nhận được lỗi "không được ủy quyền cho truy vấn trên my_db.system.namespaces". – jononomo

+1

Ok, do đó, Heroku đã ngẫu nhiên đặt tên cho cơ sở dữ liệu mongo của tôi một tên khác với tên tôi đã sử dụng trong dev. Tôi nghĩ đó là vấn đề cơ bản của tôi. – jononomo

+0

Nhưng nếu tôi có? AuthSource = admin cuối cùng. Nó không hoạt động. --xác thựcDatabase không giúp ích gì. – RomKazanova

30

Với Mongo 3.2 and higher chỉ cần sử dụng chuỗi kết nối của bạn như là:

mongo mongodb://username:[email protected]:10011/my_database 
+3

Lưu ý rằng bạn cần mongo shell v3.2 hoặc mới hơn để làm việc này. Xem https://jira.mongodb.org/browse/SERVER-6233 –

Các vấn đề liên quan