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"