[mongodb] “@”가있는 MongoDB 비밀번호

Node.js에서 Mongoose를 사용하여 사용자 이름과 비밀번호로 MongoDB 데이터베이스에 연결하려고합니다. 모든 문서는 연결 문자열이 다음과 같아야한다고 말합니다.

  mongodb://username:password@host:port/db

그러나 암호에는 ‘@’문자가 포함되어 있습니다. 몽구스가 이해할 수있는 연결 문자열을 어떻게 만들 수 있습니까? 비밀번호에서 ‘@’를 이스케이프 할 수 있습니까? 아니면 다른 연결 방법을 사용해야합니까?



답변

다음 구문을 사용하십시오.

mongoClient.connect("mongodb://username:p%40ssword@host:port/dbname?authSource=admin", {
        useNewUrlParser: true
    }, function(err, db) {

    }
);


답변

비밀번호에 특수 문자가있는 경우 :

const dbUrl = `mongodb://adminUsername:${encodeURIComponent('adminPassword')}@localhost:27017/mydb`;


답변

URL 문자열에 비밀번호를 포함하는 대신 호출 의 options매개 변수 mongoose.connect를 사용하여 비밀번호를 지정하십시오.

mongoose.connect('mongodb://localhost/test',
                 {user: 'username', pass: 'p@ssword'},
                 callback);


답변

내 친구, 이것을 시도하십시오.

    mongoose.connect("mongodb://localhost:27017/test?authSource=admin",
                     {user: 'viettd', pass: 'abc@123'});

test내 db 이름
admin은 내 인증 용 db
viettd는 내 사용자 이름
abc@123은 내 암호


답변

대신 pwd를 사용하여 버전 3.2에서 나를 위해 일했습니다.

mongoose.connect('mongodb://localhost/test',
                 {user: 'username', pwd: 'p@ssword'},
                 callback);


답변

나는 또한 같은 문제에 직면했습니다. 인코딩 된 암호를 연결 문자열에 추가하여 해결했습니다. 그리고 그것은 잘 작동합니다.

(1) https://www.url-encode-decode.com 에서 비밀번호를 인코딩합니다.
(2) 비밀번호를 인코딩 된 비밀번호로 바꿉니다.
(3) 잘 작동합니다.

예 :
실제 암호 : ABCDEX $ KrrpvDzRTy` @ drf. ‘; 3X
인코딩 된 암호 : ABCDEX % 24KrrpvDzRTy % 60 % 40drf. % 27 % 3B3X

mongodb : // user1 : ABCDEX%24KprpvDzRTy%60%40drf.%27%3B3X@dstest.com : 1234, ds1234-test.com : 19889 / mongo-dev? replicaSet = rs-ds123546978 & ssl = true ‘,


답변

Mongodb 네이티브 Node.js 드라이버를 사용하는 경우 3.1 드라이버 버전에서 이것이 작동합니다. URL에 인증 정보가 포함되어 있지 않다고 가정합니다.

MongoClient = require('mongodb').MongoClient;
let options = {
    useNewUrlParser: true,
    auth: {
        user: 'your_usr',
        password: 'your_pwd'
    }
};
MongoClient.connect(url, options, callback);

또는 URL에 인증 정보를 포함하려면 다음과 같이하십시오.

let url = "mongodb://username:" + encodeURIComponent("p@ssword") + "@localhost:27017/database"