làm cách nào để kết nối với máy chủ mongo từ xa từ thiết bị đầu cuối Mac OS


101

Tôi muốn thả vào shell mongo trong thiết bị đầu cuối trên MacBook của mình. Tuy nhiên, tôi quan tâm đến việc kết nối với phiên bản Mongo đang chạy trên đám mây (phiên bản compo.io thông 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:

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

Tôi đã cài đặt mongodb trên MacBook của mình bằng Homebrew không phải vì tôi muốn Mongo chạy trên máy Mac của mình mà chỉ để truy cập vào chương trình shell 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 lệnh phù hợp để có được quyền truy cập đầy đủ vào shell mà tôi muốn. Sử dụng hướng dẫn được tìm thấy tại đâ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ư một kết nối, nhưng không cần cung cấp tên người dùng hoặc mật khẩu của mình. kết nối đầy đủ. Đang chạy db.auth(username, password)trả về 1 (trái ngược với "xác thực không thành công" 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 thực hiện show dbslệnh.

Câu trả lời:


170

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 chuyển auth trong dòng lệnh:

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

Sau khi kết nối, bạn có thể xem các bộ sưu tập không?

> show collections

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


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 phép truy vấn trên my_db.system.namespaces".
jononomo

1
Được rồi, vì vậy heroku đã đặt tên ngẫu nhiên cho cơ sở dữ liệu mongo của tôi một tên khác với tên mà tôi đang sử dụng trong dev. Tôi nghĩ về cơ bản đó là vấn đề của tôi.
jononomo

1
Nhưng nếu cuối cùng tôi có? AuthSource = admin. Nó không hoạt động. --authenticationDatabase không giúp được gì.
Roman Kazanovskyi

27017 là cổng mặc định. chỉ trong trường hợp cổng ví dụ không hoạt động. docs.mongodb.com/manual/reference/default-mongodb-port
thay đổi

51

Với Mongo 3.2 và cao hơn, chỉ cần sử dụng chuỗi kết nối của bạn như sau:

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

0

Một cách khác để làm điều này là:

mongo mongodb://mongoDbIPorDomain:port
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.