J'ai une application Parse et j'essaie de migrer la base de données de mon application vers une instance MongoDB sur mLab.
J'ai déjà un fork de Parse Server configuré sur Heroku, et j'utilise le module complémentaire mLab MongoDB de Heroku.
J'ai une base de données sur mLab appelée heroku_1ksph3jj
, et je devrais pouvoir me connecter avec le modèle suivant:
mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj
Cependant, chaque tentative renvoie:
Server returned error on SASL authentication step: Authentication failed.
Je ne sais pas quoi remplacer <dbuser>
et <dbpassword>
avec. J'ai un utilisateur de base de données portant le même nom que ma base de données: heroku_1ksph3jjz
, donc je l'ai utilisé. Et j'ai utilisé le mot de passe de cet utilisateur à la place de <dbpassword>
. Aurais-je dû utiliser autre chose ici?
Vous pouvez obtenir le dbuser et le dbpass avec:
heroku config | grep MONGODB_URI
Saisissez le dbuser (example_user) et dbpass (example_pass) de la réponse:
MONGOLAB_URI: mongodb://example_user:[email protected]:12345/db
Depuis mars 2016, mLab.com ne prend en charge que mongo 3.0+ (selon une conversation avec le support), en raison de leurs nouvelles exigences d'authentification onéreuses.
Ce n'était pas sur le site Web, mais j'espère que cela aide quelqu'un ici!
Il y a un message pour créer un utilisateur pour la base de données spécifique: Un utilisateur de base de données est requis pour se connecter à cette base de données. Pour en créer un maintenant, visitez l'onglet 'Utilisateurs' et cliquez sur le bouton 'Ajouter un utilisateur de base de données'
Je suis vraiment désolé que cela puisse sembler évident, mais vous devez supprimer ces caractères <> pour que la migration fonctionne
Dans votre exemple, cela ressemblerait à ceci: mongodb: // dbuser: [email protected]: 47124/heroku_1ksph3jj
Pour les futurs visiteurs - n'utilisez pas caractères spéciaux dans le mot de passe. Même si vous changez le caractère spécial en ascii ou nicode cela ne fonctionnera pas pour mLab en utilisant mangouste.
N'utilisez pas non plus les informations d'identification mLab, utilisez les informations d'identification utilisateur db. J'ai créé un nouvel utilisateur.
Par exemple. Pour moi, un mot de passe contenant @ caractère a été remplacé par ascii valeur % 4 dans l'URI, qui fonctionnait lors de l'utilisation nativemongodb pilote. Mais en utilisant la mangouste, je recevais toujours Échec de l'authentification. J'ai supprimé les caractères spéciaux et db a été authentifié via mangouste.
Vérifiez la version de votre client mongo. S'il s'agit d'une ancienne version majeure (probablement 2.x), mettez-la à jour en 3.x
Il semble que c'était le mot de passe qui était incorrect, qui, je suppose, a été configuré par le module complémentaire mLab de Heroku. Il n'y avait aucun moyen évident de réinitialiser cela dans l'interface utilisateur de mLab, donc à la fin j'ai créé un autre utilisateur de base de données (avec un nouveau nom d'utilisateur et un nouveau mot de passe) et j'ai pu me connecter très bien.
Je sais que je suis trop tard, juste pour information. Pour obtenir les informations du compte mLab qui a été créé automatiquement lorsque l'addon mLab a été ajouté à l'application dans votre compte Heroku, essayez la commande ci-dessous.
heroku config:get MONGODB_URI
Réf: http://algebra.sci.csueastbay.edu/~grewe/CS6320/Mat/NodeJS/Heroku/Heroku_MLabMongoDB.html
Accédez simplement à votre tableau de bord Herok et vérifiez vos paramètres.
Sous le champ du nom, il y a un gros bouton "Reveal Config Vars". Cliquez dessus et vous verrez une var MONGODB_URI avec un uri à votre base de données. Cela ressemblera à ceci:
mongodb: // heroku_user: [email protected]: 63295/heroku_user
Votre mot de passe se trouve juste après le point-virgule après le nom d'utilisateur heroku.