이 글에서는 주로 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" } ] }
db.dropUser('username')
명령을 사용하여 원래 사용자를 모두 🎜삭제🎜한 다음 버전 변경 명령을 실행합니다. 🎜🎜🎜🎜rrreee🎜3. 중복 사용자 만들기 🎜rrreee🎜4. Robomongo 도구를 사용하면 여기에 PASS가 표시되는지 확인할 수 있습니다. 🎜🎜🎜🎜위 내용은 mongodb 3.4에서 원격 연결 인증이 실패하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!