Ich versuche, mit Mongoose in Node.js eine Verbindung zu einer MongoDB-Datenbank mit einem Benutzernamen und einem Kennwort herzustellen. Alle Dokumente sagen, dass die Verbindungszeichenfolge aussehen sollte
mongodb://username:password@host:port/db
Das Passwort enthält jedoch das Zeichen '@'. Wie kann ich daraus eine Verbindungszeichenfolge machen, die Mungo verstehen wird? Kann ich das '@' im Passwort umgehen oder gibt es eine andere Verbindungsmethode, die ich verwenden muss?
@
in Ihrem Passwort muss in der URL verschlüsselt sein. Das codierte@
Zeichen ist%40
. Das%
Zeichen muss jedoch auch codiert werden. Also, wenn Ihr Passwort ist, sagen wir,p@ss
sollte das endgültige verschlüsselte Passwort seinp%2540ss
Antworten:
Verwenden Sie diese Syntax:
quelle
{uri_decode_auth: true}
auf den ersten Blick verpasst , aber es hat funktioniert, als ich das bemerkt habe. Vielen Dank.{uri_decode_auth: true}
sollte als separates Objekt übergeben werden, wenn Sie sich in NodeJS befinden und den nativen Treiber von mongoDB verwenden.Wenn Ihr Passwort Sonderzeichen enthält:
quelle
Verwenden Sie den
options
Parameter desmongoose.connect
Aufrufs, um das Kennwort anzugeben, anstatt es in die URL-Zeichenfolge aufzunehmen:quelle
Ich habe auch das gleiche Problem konfrontiert. Ich habe gelöst, indem ich ein verschlüsseltes Passwort in die Verbindungszeichenfolge eingefügt habe. Und es funktioniert einfach gut.
(1) Codieren Sie Ihr Passwort unter https://www.url-encode-decode.com.
(2) Ersetzen Sie Ihr Passwort durch ein verschlüsseltes.
(3) Es sollte gut funktionieren.
Beispiel:
Tatsächliches Kennwort: ABCDEX $ KrrpvDzRTy` @ drf. '; 3X-
codiertes Kennwort: ABCDEX% 24KrrpvDzRTy% 60% 40drf.% 27% 3B3X
mongodb: // user1: ABCDEX%24KprpvDzRTy%60%40drf.%27%[email protected]: 1234, ds1234-test.com: 19889 / mongo-dev? replicaSet = rs-ds123546978 & ssl = true ',
quelle
Versuchen Sie dieses, meine Freunde:
test
ist mein Datenbanknameadmin
ist mein Datenbankname für die Authentifizierungviettd
ist mein Benutzernameabc@123
ist mein Passwortquelle
benutze pwd statt pass, das hat bei mir für version3.2 funktioniert
quelle
Keine der oben genannten Lösungen hat bei mir funktioniert. Ich recherchierte weiter und fand heraus, dass ich den Parameter useNewUrlParser einschließen musste.
Soweit ich weiß, benötigen Sie eine bestimmte Version von MongoDB, um diese zu verwenden. Weitere Informationen finden Sie unter Vermeiden Sie die Warnung "Der aktuelle URL-String-Parser ist veraltet", indem Sie useNewUrlParser auf true setzen
Es soll die Warnung loswerden, aber die Version wirkt sich eindeutig auch auf den erforderlichen Parameter aus.
Ich habe nicht alle Sonderzeichen getestet, aber es funktioniert definitiv mit '@ # $'.
Hoffe das hilft.
quelle
Wenn Sie den nativen Mongodb-Treiber Node.js verwenden, funktioniert dies für mich ab Version 3.1. Angenommen, Ihre URL enthält keine Authentifizierungsinformationen.
Oder wenn Sie Auth-Informationen in Ihre URL aufnehmen möchten, gehen Sie folgendermaßen vor:
quelle
Manchmal müssen Sie mit anderen Tools , die nur Zeichenfolgen als Verbindungszeichenfolge akzeptieren, eine Verbindung zur Datenbank herstellen. Ändern Sie einfach das @ -Zeichen mit% 40
quelle
quelle
Diese Lösung erfordert eine zusätzliche Abhängigkeit, aber es war das, was letztendlich für mich funktioniert hat.
Fügen Sie
mongodb-uri
Ihrem Projekt und den folgenden Zeilen zu Ihrem Code hinzu:Ich habe diesen Vorschlag in
mongoose
der GitHub-Ausgabe Nr. 6044 gefunden .quelle
Für diejenigen, die sich mit Mongo Compass ( MacOSx ) verbinden, gehen Sie einfach zu Ihrem Cluster -> Sicherheit (Tab) auf mongodb.com
Dann
Bearbeiten Sie Ihr Passwort (klicken Sie auf die Schaltfläche Bearbeiten in Ihrem Benutzernamen):
Sie erhalten ein Modal / Popup / Dialogfeld: Drücken Sie unter Ihrem Namen auf Passwort bearbeiten (die Schaltfläche ist standardmäßig ausgegraut, wird jedoch direkt unter Ihrem Namen angezeigt) -> Drücken Sie dann Benutzer aktualisieren
Weiter :
Schließen Sie Ihre Mongo DB-Kompassanwendung, wenn sie ausgeführt wird: (Mongo beenden)
Nächster Schritt:
Kehren Sie zur Registerkarte Übersicht in mongodb.com zurück und wählen Sie Verbinden
Zurück zu OverView:
Nächster Schritt:
Wählen Sie im Popup-Dialogfeld Mit MongoDB-Kompass verbinden aus und wählen Sie in der nächsten Ansicht eine Version aus, die Sie verwenden möchten (vorzugsweise VersionNumber früher ):
Dann:
Kopieren Sie die Ihnen präsentierte URI-Zeichenfolge :
Öffnen Sie die MongoDB Compass-Anwendung erneut:
Außerdem erhalten Sie die Option / das Popup, um die erkannte URI-Zeichenfolge zu verwenden: Klicken Sie auf Ja
Letzter Schritt:
Geben Sie Ihr neues Passwort ein und verbinden Sie sich . Jetzt sollte Ihre Verbindung nun erfolgreich sein.
quelle
Benutze das,
quelle
Wenn der Benutzername oder das Kennwort das Zeichen at sign @, Doppelpunkt :, slash / oder das Zeichen% sign% enthält, verwenden Sie die Prozentcodierung .
Mongo Docs: https://docs.mongodb.com/manual/reference/connection-string/
quelle
Ich habe dies in Python versucht und hatte einen ähnlichen Fehler. Das hat bei mir funktioniert.
12% 40password stellt Ihr Passwort dar und setzt voraus, dass es ein Sonderzeichen hat (z. B. @ - dargestellt durch% 40) - Benutzername ist Ihr Mongodb-Benutzername, IP - Ihre IP-Adresse und sample_db die Datenbank unter Mongodb, mit der Sie eine Verbindung herstellen möchten.
quelle