복붙노트

[MONGODB] 와 MongoDB를 암호 "@"그 안에

MONGODB

와 MongoDB를 암호 "@"그 안에

나는 Node.js.에 몽구스를 사용하여 사용자 이름과 암호로 MongoDB를 데이터베이스에 연결하기 위해 노력하고있어 모든 문서는 연결 문자열과 같아야 말

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

그러나, 암호는 거기에 '@'문자가 포함되어 있습니다. 몽구스 이해할 것이다 어떻게이 밖으로 연결 문자열을 만들 수 있습니까? 나는 암호에 '@'를 탈출이나 내가 사용이 연결의 또 다른 방법이있다 할 수 있습니까?

해결법

  1. ==============================

    1.이 구문을 사용합니다 :

    이 구문을 사용합니다 :

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

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

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

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

    3.대신 URL 문자열에 포함의 암호를 지정합니다 mongoose.connect 호출의 옵션 매개 변수를 사용합니다 :

    대신 URL 문자열에 포함의 암호를 지정합니다 mongoose.connect 호출의 옵션 매개 변수를 사용합니다 :

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

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

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

    (1) https://www.url-encode-decode.com에서 암호를 인코딩 (2) 인코딩 하나 암호를 교체합니다. (3) 그것은 잘 작동합니다.

    예를 들면 : 실제 암호 : ABCDEX $ KrrpvDzRTy` @ DRF '; 배. 인코딩 된 암호 :. ABCDEX % 24KrrpvDzRTy % 60 % 40drf %는 27 % 3B3X

    MongoDB를 : // 사용자 1 : ABCDEX%24KprpvDzRTy%60%40drf.%27%3B3X@dstest.com : 1234 ds1234-test.com : 19889 / 몽고-dev에 replicaSet = RS-ds123546978 및 SSL = 사실 ',

  5. ==============================

    5.이 하나, 내 친구를보십시오 :

    이 하나, 내 친구를보십시오 :

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

    테스트는 내 DB 이름입니다 관리자는 인증에 대한 내 DB를하다 viettd 내 사용자 이름입니다 ABC @ (123) 내 비밀번호입니다

  6. ==============================

    6.사용 대신 version3.2 나를 위해 일한 것을, 통과 PWD

    사용 대신 version3.2 나를 위해 일한 것을, 통과 PWD

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

    7.언급 솔루션 중에 위의 나를 위해 일하지 않는다. 나는 그것을 더 연구하고 내가 useNewUrlParser 매개 변수를 포함했다는 것을 알게되었습니다.

    언급 솔루션 중에 위의 나를 위해 일하지 않는다. 나는 그것을 더 연구하고 내가 useNewUrlParser 매개 변수를 포함했다는 것을 알게되었습니다.

    mongoose.connect(db, {
        useNewUrlParser : true
        },
        err => {
        if (err){
            console.error('Error: ' + err)
        }
        else{
            console.log('Connected to MongoDb')
        }
    })
    

    내가 이해에서, 당신은이를 사용하기 위해 MongoDB를 특정 버전이 필요합니다. 자세한 내용은 체크하지 마십시오 true로 useNewUrlParser를 설정하여 경고 "현재 URL 문자열 파서는 사용되지 않습니다"

    이 경고를 제거하지만, 분명히 버전은 또한 필수 매개 변수에 영향을받을 것입니다.

    나는 모든 특수 문자를 시험하지 않았다하지만 확실히 '@ # $'와 함께 작동합니다.

    희망이 도움이됩니다.

  8. ==============================

    8.당신이 MongoDB를 기본 Node.js를 드라이버를 사용하는 경우이 3.1 드라이버 버전의 나를 위해 일하는 것입니다. 인증 정보를 포함하지 않는 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"
    
  9. ==============================

    9.때때로 당신은 단지 연결 문자열로 문자열을 받아 다른 도구를 사용하여 DB에 연결해야합니다. 그래서 그냥 40 %로 @ 기호를 변경

    때때로 당신은 단지 연결 문자열로 문자열을 받아 다른 도구를 사용하여 DB에 연결해야합니다. 그래서 그냥 40 %로 @ 기호를 변경

  10. ==============================

    10.

    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`
    );
    
  11. ==============================

    11.이 솔루션은 별도의 의존성을 필요로하지만, 그것은 결국 나를 위해 일한 것을이었다.

    이 솔루션은 별도의 의존성을 필요로하지만, 그것은 결국 나를 위해 일한 것을이었다.

    프로젝트에 MongoDB를-URI와 코드에 다음 줄을 추가합니다 :

    const mongoose = require('mongoose')
    const mongodbUri = require('mongodb-uri')
    let mongooseUri = mongodbUri.formatMongoose(config.mongo.uri)
    mongoose.connect(mongooseUri, config.mongo.options)
    

    나는 몽구스의 GitHub의 문제 # 6044에서이 제안을 발견했다.

  12. ==============================

    12.몽고 나침반 연결을 위해. (에서라도) 간단하게 mongodb.com에 당신의 cluster-> 보안 (탭)로 이동

    몽고 나침반 연결을 위해. (에서라도) 간단하게 mongodb.com에 당신의 cluster-> 보안 (탭)로 이동

    그때

    비밀번호를 (보도 사용자 이름에 편집 버튼) 편집 :

    > 그리고 언론 사용자 업데이트 - 당신의 이름 아래를 눌러 편집 암호 (버튼은 기본적으로 회색으로 표시하지만, 당신의 이름 아래에 나타납니다) : 당신은 모달 / 팝업 / 대화를 얻을 것이다

    다음 것:

    (몽고을 종료)의 실행이 경우 몽고 DB 나침반 응용 프로그램을 닫습니다

    다음 단계:

    의 개요 탭으로 돌아 mongodb.com.and 연결을 선택

    개요로 돌아 가기 :

    다음 단계:

    팝업 대화 상자에서 다음 다음보기에 당신이 (바람직의 versionNumber 이전) 사용하고자하는 버전을 선택 MongoDB를 나침반으로 연결을 선택합니다 :

    그때:

    URI를 문자열 당신에게 제시 복사 :

    MongoDB의 나침반 응용 프로그램을 다시 엽니 다 :

    그리고 그것은 당신에게 옵션을 /를 URI 문자열을 사용하는 팝업 감지를 줄 것이다 : 예를 클릭합니다

    마지막 단계:

    새 암호와 연결을 입력합니다. 이제 연결은 이제 성공합니다.

  13. from https://stackoverflow.com/questions/7486623/mongodb-password-with-in-it by cc-by-sa and MIT license