2016-03-18 62 views
22

Tôi có ứng dụng Parse và tôi đang cố gắng di chuyển cơ sở dữ liệu của ứng dụng của mình sang phiên bản MongoDB trên mLab.Kết nối với cơ sở dữ liệu MongoDB trên mLab xác thực không thành công

Tôi đã có một nhánh của Parse Server được thiết lập trên Heroku và tôi đang sử dụng add-on mLab MongoDB của Heroku.

Tôi có một cơ sở dữ liệu về mLab gọi heroku_1ksph3jj, và tôi sẽ có thể kết nối nó với các mẫu sau:

mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj

Tuy nhiên, mỗi nỗ lực lợi nhuận:

Server returned error on SASL authentication step: Authentication failed.

Tôi không chắc chắn nên thay thế những gì <dbuser><dbpassword> bằng. Tôi có một người dùng cơ sở dữ liệu có cùng tên với cơ sở dữ liệu của tôi: heroku_1ksph3jjz, vì vậy tôi đã sử dụng nó. Và tôi đã sử dụng mật khẩu cho người dùng đó thay cho <dbpassword>. Tôi có nên sử dụng cái gì khác ở đây không?

Trả lời

39

Bạn có thể lấy dbuser và dbpass với:

heroku config | grep MONGODB_URI

Grab các dbuser (example_user) và dbpass (example_pass) từ phản ứng:

MONGOLAB_URI: mongodb://example_user:[email protected]:12345/db

+1

Tuyệt vời, cảm ơn. Đây là giải pháp tốt hơn là chỉ tạo người dùng cơ sở dữ liệu mới nếu bạn quên mật khẩu của mình. – AdColvin

+0

Vào ngày 15 tháng 7 năm 2016, bây giờ là 'cấu hình heroku | grep MONGODB_URI' –

2

Dường như đó là mật khẩu không chính xác, mà tôi giả định được thiết lập bởi add-on mLab của Heroku. Không có cách rõ ràng để thiết lập lại điều này trong giao diện người dùng mLab, vì vậy cuối cùng tôi đã tạo một người dùng cơ sở dữ liệu khác (với tên người dùng và mật khẩu mới) và có thể kết nối với điều đó tốt.

10

Tính đến tháng 3 năm 2016 , mLab.com chỉ hỗ trợ mongo 3.0+ (theo cuộc trò chuyện với hỗ trợ), vì yêu cầu xác thực hợp lệ mới của chúng.

Điều này không có trên trang web, nhưng tôi hy vọng nó sẽ giúp ai đó ở đây!

+0

Nhưng có giải pháp nào không? –

+1

Giải pháp của tôi là để có được một hộp dev fugly tôi đã ở một nơi khác, tải về mongo 3+ khách hàng (trên centos 7 nó thực sự dễ dàng) và không sully mac ngày-to-ngày của tôi! Hy vọng rằng sẽ giúp :) – lol

+0

Nó chắc chắn đã giúp, hiện tại phiên bản mongo trên Ubuntu mặc định PPA là 2,6, tôi sẽ không bao giờ vượt qua xác thực ngay cả với các thông tin chính xác, cảm ơn một tấn cho điều này! – Miguelgraz

3

Tôi rất xin lỗi rằng điều này có vẻ hiển nhiên, nhưng bạn cần phải loại bỏ nhân vật này <> cho việc chuyển đổi sang làm việc

Trong ví dụ của bạn sẽ trông như thế này: MongoDB: // dbuser: [email protected]: 47124/heroku_1ksph3jj

+0

Cảm ơn, tôi chỉ cần đặt những người ở đó để cho thấy rằng người dùng và mật khẩu đã được giữ chỗ. Tôi đã xóa chúng trước khi cố gắng kết nối. – AdColvin

+1

đây là câu trả lời đúng. nghiêm túc cảm ơn bạn. không có lý do tại sao mọi người khác nói về các phiên bản. cảm ơn bạn! – Ibdakine

3

Kiểm tra phiên bản ứng dụng khách mongo của bạn. Nếu có phiên bản chính cũ hơn (có thể là 2.x), hãy cập nhật nó lên 3.x

+0

Thats it. Cảm ơn vì lời khuyên. –

7

Có một thông báo để tạo người dùng cho cơ sở dữ liệu cụ thể: Người dùng cơ sở dữ liệu được yêu cầu kết nối với cơ sở dữ liệu này. Để tạo ngay bây giờ, hãy truy cập vào tab 'Người dùng' và nhấp vào nút 'Thêm người dùng cơ sở dữ liệu'

2

Đối với du khách trong tương lai - không sử dụng ký tự đặc biệt mật khẩu .Even nếu bạn thay đổi ký tự đặc biệt để ascii hoặc unicode nó sẽ không hoạt động cho mLab sử dụng mongoose.

Cũng không sử dụng thông tin xác thực mlab, sử dụng thông tin xác thực người dùng db. Tôi đã tạo một người dùng mới.

Ví dụ: Đối với tôi một mật khẩu có chứa @ nhân vật đã được thay thế bằng ascii giá trị % 40 trong URI, mà làm việc khi sử dụng mẹ đẻMongoDB lái xe. Nhưng khi sử dụng mongoose, tôi luôn nhận được Xác thực không thành công. Tôi đã xóa các ký tự đặc biệt và db đã được xác thực qua mongoose.

+1

Tôi cũng đã thử mật khẩu bằng cách sử dụng @ và kết nối không thành công. Đây vẫn là một vấn đề! – jessi

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