"@"가있는 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);
나는 또한 같은 문제에 직면했습니다. 인코딩 된 암호를 연결 문자열에 추가하여 해결했습니다. 그리고 그것은 잘 작동합니다.
(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 ',
대신 pwd를 사용하여 버전 3.2에서 나를 위해 일했습니다.
mongoose.connect('mongodb://localhost/test',
{user: 'username', pwd: 'p@ssword'},
callback);
내 친구, 이것을 시도하십시오.
mongoose.connect("mongodb://localhost:27017/test?authSource=admin",
{user: 'viettd', pass: 'abc@123'});
test
내 db 이름
admin
은 내 인증 용 db
viettd
는 내 사용자 이름
abc@123
은 내 암호
위에서 언급 한 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 더 자세히 조사한 결과 useNewUrlParser 매개 변수를 포함해야한다는 것을 알았습니다.
mongoose.connect(db, {
useNewUrlParser : true
},
err => {
if (err){
console.error('Error: ' + err)
}
else{
console.log('Connected to MongoDb')
}
})
내가 이해 한 바에 따르면 이것을 사용하려면 특정 버전의 MongoDB가 필요합니다. 자세한 내용 은 useNewUrlParser를 true로 설정하여 "현재 URL 문자열 구문 분석기가 사용되지 않음"경고 방지를 확인 하십시오.
경고를 제거하는 것이지만 버전은 필수 매개 변수에도 영향을줍니다.
모든 특수 문자를 테스트하지는 않았지만 확실히 '@ # $'와 함께 작동합니다.
도움이 되었기를 바랍니다.
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"
연결 문자열로만 문자열을 받아들이는 다른 도구 를 사용하여 DB에 연결해야하는 경우가 있습니다 . 따라서 @ 기호를 % 40으로 변경하십시오.
Also, if your password contains a percentage, %,
Because the percent ("%") character serves as the indicator for percent-encoded octets, it must be percent-encoded as "%25" for that octet to be used as data within a URI
for example, if your password is John%Doe, the new transformed password will be John%25Doe or
If password is Paul%20Wait, New Password will be Paul%2520Wait
mongoClient.connect("mongodb://username:John%25Doe@host:port/dbname", function(err, db) {
// password is John%Doe
}`enter code here`
);
이 솔루션에는 추가 종속성이 필요하지만 마침내 저에게 효과적이었습니다.
mongodb-uri
프로젝트에 추가 하고 코드에 다음 줄을 추가합니다.
const mongoose = require('mongoose')
const mongodbUri = require('mongodb-uri')
let mongooseUri = mongodbUri.formatMongoose(config.mongo.uri)
mongoose.connect(mongooseUri, config.mongo.options)
이 제안은 mongoose
GitHub 문제 # 6044 에서 발견되었습니다 .
Mongo Compass로 연결하는 경우 ( MacOSx ) mongodb.com에서 클러스터 -> 보안 (Tab)으로 이동하십시오.
그때
모달 / 팝업 / 대화 상자가 표시됩니다 : 이름 아래에있는 비밀번호 편집을 누르십시오 (버튼은 기본적으로 회색으로 표시되지만 이름 바로 아래에 나타납니다)-> 그런 다음 사용자 업데이트를 누르 십시오.
다음 :
실행중인 경우 mongo db 나침반 응용 프로그램을 닫습니다. (Mongo 종료)
다음 단계:
mongodb.com.의 개요 탭으로 돌아가 연결을 선택 합니다.
다음 단계:
팝업 대화 상자에서 MongoDB Compass와 연결을 선택한 다음 다음보기에서 사용할 버전을 선택합니다 (바람직하게는 VersionNumber 이전 ).
그때:
제공된 URI 문자열을 복사 하십시오 .
MongoDB Compass 애플리케이션을 다시 엽니 다.
그리고 그것은 당신에게 옵션을 /를 URI 문자열을 사용하는 팝업 감지를 줄 것이다 : 클릭 예
마지막 단계:
새 암호를 입력하고 연결합니다 . 이제 연결이 성공할 것입니다.
참고 URL : https://stackoverflow.com/questions/7486623/mongodb-password-with-in-it
'Nice programing' 카테고리의 다른 글
설치된 모든 NuGet 패키지를 나열하는 방법은 무엇입니까? (0) | 2020.10.23 |
---|---|
명령 줄에서 /etc/apt/sources.list에 텍스트를 추가하려면 어떻게해야합니까? (0) | 2020.10.23 |
Angularjs의 앵커 링크? (0) | 2020.10.23 |
Git Bash 화면을 지우는 명령 (0) | 2020.10.23 |
Django에서 SELECT COUNT (*) GROUP BY 및 ORDER BY를 수행하는 방법은 무엇입니까? (0) | 2020.10.23 |