Parseアプリがあり、アプリのデータベースをmLabのMongoDBインスタンスに移行しようとしています。
私はすでにHerokuにParse Serverのフォークをセットアップしており、HerokuのmLab MongoDBアドオンを使用しています。
MLabにはheroku_1ksph3jj
というデータベースがあり、次のテンプレートを使用して接続できるはずです。
mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj
ただし、各試行は以下を返します。
Server returned error on SASL authentication step: Authentication failed.
<dbuser>
と<dbpassword>
を何に置き換えるかわかりません。データベースと同じ名前のデータベースユーザーheroku_1ksph3jjz
があるため、それを使用しました。そして、<dbpassword>
の代わりにそのユーザーのパスワードを使用しました。ここで何か他のものを使用する必要がありましたか?
Dbuserとdbpassは次の方法で取得できます。
heroku config | grep MONGODB_URI
応答からdbuser(example_user)とdbpass(example_pass)を取得します。
MONGOLAB_URI: mongodb://example_user:[email protected]:12345/db
2016年3月の時点で、mLab.comは、新たな煩わしい認証要件のため、mongo 3.0+のみをサポートしています(サポートとの会話による)。
これはウェブサイトにはありませんでしたが、ここの誰かに役立つことを願っています!
特定のデータベースのユーザーを作成するメッセージがあります。このデータベースに接続するにはデータベースユーザーが必要です。今すぐ作成するには、「ユーザー」タブにアクセスし、「データベースユーザーの追加」ボタンをクリックします
明らかなように思えるかもしれませんが、移行を機能させるには、この文字を削除する必要があります<>
この例では、mongodb:// dbuser:[email protected]:47124/heroku_1ksph3jjのようになります。
将来の訪問者のために-パスワードに特殊文字を使用しないでください。特殊文字をasciiまたはunicodeに変更すると機能しませんmLabmongooseを使用します。
また、mLab資格情報は使用せず、dbユーザー資格情報を使用します。新しいユーザーを作成しました。
例えば。私の場合、@文字を含むパスワードはascii値%40URIで、nativemongodbドライバー。しかし、mongooseを使用すると、常にAuthentication Failedを取得していました。特殊文字を削除し、dbはmongooseを介して認証されました。
Mongoクライアントのバージョンを確認してください。古いメジャーバージョン(おそらく2.x)の場合は、3.xに更新します。
パスワードが間違っていたように見えますが、これはHerokuのmLabアドオンによって設定されたと思われます。 mLab UIでこれをリセットする明確な方法はなかったため、最終的に(新しいユーザー名とパスワードで)別のデータベースユーザーを作成し、それで問題なく接続できました。
情報だけでは手遅れです。 mLabアドオンがherokuアカウントのアプリケーションに追加されたときに自動作成されたmLabアカウントの情報を取得するには、以下のコマンドを試してください。
heroku config:get MONGODB_URI
参照: http://algebra.sci.csueastbay.edu/~grewe/CS6320/Mat/NodeJS/Heroku/Heroku_MLabMongoDB.html
Herokuダッシュボード に移動して、設定を確認してください。
名前フィールドの下に、「Reveal Config Vars」という大きなボタンがあります。それをクリックすると、データベースへのURIが付いたMONGODB_URI変数が表示されます。次のようになります。
mongodb:// heroku_user:[email protected]:63295/heroku_user
パスワードは、herokuユーザー名の後のセミコロンの直後です。