sourcecode

mongo ab에 연결할 수 없습니다. MongoError: 인증 실패

copyscript 2023. 7. 13. 21:02
반응형

mongo ab에 연결할 수 없습니다. MongoError: 인증 실패

저는 최근에 mongoLab에 계정을 만들었습니다.아래 문장을 사용하여 데이터베이스에 연결하려고 할 때.

var mongoose = require('mongoose');
mongoose.connect('mongodb://mk:12345@ds047742.mongolab.com:47742/mkdb');

항상 다음 오류가 발생합니다.

MongoError: auth failed
at Function.MongoError.create (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at /Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:793:66
at Callbacks.emit (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:94:3)
at null.messageHandler (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:235:23)
at Socket.<anonymous> (/Users/a042292/Desktop/start/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/connection/connection.js:259:22)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)

합니다.username그리고.password이 .username그리고.password믈라브에서.

MLab(이전의 MongoLab)에서 다음을 수행합니다.

  1. 다으로로 합니다.Users
  2. Add Database User
  3. 사용자 이름 및 암호 선택

은 이제것이을셸수있습다니할테스트로 할 수 .mongo ds061374.mlab.com:61374/yourdb -u <dbuser> -p <dbpassword>

Mongolab은 2.6.x 데이터베이스를 3.0.x로 업그레이드했습니다.안타깝게도 mongo3는 인증 메커니즘이 달라서 오래된 클라이언트는 호환되지 않습니다.

Mongoose는 네이티브 Mongo 드라이버를 사용하고 있기 때문에 업그레이드해야 합니다.이 작업은 일반적으로 로컬 mongo 설치를 업그레이드하여 수행됩니다.

사용하는 하고 mongojs를 합니다.authMechanism:'ScramSHA1'연결 시 옵션 개체의 매개 변수:

db = mongojs('mongodb://username:password@ds31341.mongolab.com:32132/mydb', ["mycollection"], {authMechanism: 'ScramSHA1'});

저에게 해결책은 다음과 같습니다.

$ npm install --save --save-exact mongoose@4.1.9

기준:MongoDB가 3.0으로 업데이트된 후 Heroku 앱이 충돌합니다.

Database User create 여기서는 mLab 사용자 이름과 암호가 당사 데이터베이스의 사용자 이름과 암호가 아님을 알아야 합니다.거기서 우리는 연결 문자열에 올바른 사용자 이름과 암호를 사용했는지 확인해야 합니다.

여기에 데이터베이스 사용자 계정을 만들 수 있습니다.-->

나의 연결은 다음과 같습니다.

const db ="mongodb://<My database username>:<my database password>.mlab.com:39648/videoplayer"

그냥 ?authSource= your를 추가합니다.DB&w=1 to dburl

mongoose.connect('mongoodb://user:password@host/yourDB?authSource=yourDB&w=1') 이 작업은 저에게 중요합니다. &w=1

MONGO_URI='mongodb://kahn:kahney@ds747384.mlab.com :13402/e커머스?authSource=e커머스&w=1';

https://github.com/Automattic/mongoose/issues/4587

이것이 내 목숨을 구했습니다.

1 - db가 실행 중인지 확인합니다. 2 - 액세스 자격 증명을 가질 db 사용자를 생성하는 것을 잊지 마십시오.

그것이 당신에게 도움이 되기를 바랍니다!

이전 버전의 mongoose(3.8.10 버전)를 사용하는 동안 이 오류가 발생했습니다.최신 릴리스(버전 5.0.10)로 업그레이드한 후 오류가 사라지고 연결이 설정되었습니다.

npm install mongoose@5.0.10 --save...를 실행합니다.그러나 버전을 최신 버전으로 교체합니다.

올바른 DB 사용자 이름과 암호를 사용하고 있는지 확인합니다.

코드를 통해 DB에 연결하려는 경우 사용자 이름과 암호에 '@', '$' 등과 같은 특수 문자가 있으면 인코딩을 사용하여 URI를 인코딩해야 합니다.URI 구성 요소() 기능

예: "localhost://pooja:"+encodeURI 구성 요소('pooja@123')+"/trymynewdb"를 사용한 다음 encodeduri를 사용하여 db에 연결합니다.

암호에 특수 문자가 포함되어 있으면 여기에 있는 특수 문자의 URL 인코딩 값을 확인하는 것이 가장 좋습니다. url 인코딩 목록

그러나 연결을 시도하기 전에 먼저 전송되는 데이터를 확인하는 것이 좋습니다.이를 확인하는 한 가지 방법은 전송 중인 데이터를 console.log로 기록하는 것입니다.예:

console.log(process.env.MONGO_ATLAS_PW);

mshell로 연결해보세요, 제가 데이터베이스 사용자 이름과 비밀번호를 알려줬을 때도 몽구스로 연결하다가 비슷한 문제가 있었습니다.

터미널에 다음 명령을 입력하십시오.

mongo ds239412.mlab.com:39412/videoplayer11 - udbuser -pdbpassword(명령은 여기를 참조하십시오).

모델 파일에서 mongoose를 통해 연결된 코드를 제거합니다.

나를 위해 일했습니다.행복한 얼굴.

언급URL : https://stackoverflow.com/questions/30924859/unable-to-connect-to-mongolab-getting-mongoerror-auth-failed

반응형