>  기사  >  데이터 베이스  >  mongodb 3.4에서 원격 연결 인증이 실패하면 어떻게 해야 합니까?

mongodb 3.4에서 원격 연결 인증이 실패하면 어떻게 해야 합니까?

零下一度
零下一度원래의
2017-07-03 16:33:201149검색

이 글에서는 주로 mongodb 3.4에서 발생하는 원격 연결 인증 실패에 대한 해결 방법을 소개합니다. 이 글에서는 누구나 따라할 수 있는 참고 자료와 학습 가치가 있는 샘플 코드를 통해 자세히 소개합니다. 아래에서 일어나서 공부하세요.

머리말

mongodb에서 인증 기능을 켜고 끄는 것이 꽤 번거롭습니다. 새로운 서비스를 만들고 mongod --auth를 입력해야 합니다. 편의를 위해 여기에는 두 가지 서비스를 구축했으며, 내가 사용하는 서비스로 전환할 수 있습니다. mongod --auth。为了方便,我这里是建了两个服务,用到哪个就切换至哪个服务。


--需要授权

mongod --logpath "D:\data\log\mongodb.log" --logappend --dbpath "D:\data\db" --auth --serviceName 

"MongoDBService" --serviceDisplayName "MongoDBService" --install

--不需要授权

mongod --logpath "D:\data\log\mongodb.log" --logappend --dbpath "D:\data\db" --serviceName 

"MongoDBServiceNoAuth" --serviceDisplayName "MongoDBServiceNoAuth" --install

进入正题,我这边配置mongodb后,本地是可以通过db.auth('username','password')进入的,远程使用客户端工具及c#代码都无法进入。检查并没有开启防火墙,mongodb数据库又是默认所有ip都可以访问的。

后来偶然看到"使用Robomongo 连接MongoDB 3.x 报 Authorization failed 解决办法 "这篇文章按照上面的方法做就可以了。

方法如下:

1.首先我这边通过数据库版本查看发现是这样的。


> use admin

switched to db admin

> db.system.version.find()

{ "_id" : "featureCompatibilityVersion", "version" : "3.4" }

{ "_id" : "authSchema", "currentVersion" : 5 }

2.开启MongoDBServiceNoAuth服务,使用db.dropUser('username')

>db.dropUser('admin')

>db.dropUser('root')

>db.dropUser('dba')

>db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

여기서 mongodb를 구성한 후 db.auth('username','password')를 통해 로컬로 액세스하고 클라이언트 도구와 C# 코드를 사용할 수 있습니다. 원격으로 누구도 들어갈 수 없습니다. 방화벽이 켜져 있지 않은지, 기본적으로 모든 IP에서 mongodb 데이터베이스에 액세스할 수 있는지 확인하세요.

나중에 우연히 "

Robomongo를 사용하여 MongoDB 3.x에 연결하면 승인 실패 솔루션이 보고되었습니다

"라는 내용을 보았습니다. 이 기사에서는 위의 방법을 따릅니다.

🎜방법은 다음과 같습니다. 🎜🎜🎜🎜1 우선 데이터베이스 버전을 확인해 보니 이런 경우였습니다. 🎜🎜🎜🎜
> db.createUser({user:"admin",pwd:"********",roles:[{"role":"userAdminAnyDataba

se","db":"admin"},{"role":"readWrite","db":"qxkf"}]})

Successfully added user: {

  "user" : "admin",

  "roles" : [

    {
      "role" : "userAdminAnyDatabase",

      "db" : "admin"

    },
    {
      "role" : "readWrite",

      "db" : "qxkf"

    }

  ]

}
🎜2. MongoDBServiceNoAuth 서비스를 활성화하고 db.dropUser('username') 명령을 사용하여 원래 사용자를 모두 🎜삭제🎜한 다음 버전 변경 명령을 실행합니다. 🎜🎜🎜🎜rrreee🎜3. 중복 사용자 만들기 🎜rrreee🎜4. Robomongo 도구를 사용하면 여기에 PASS가 표시되는지 확인할 수 있습니다. 🎜🎜🎜🎜

위 내용은 mongodb 3.4에서 원격 연결 인증이 실패하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.