首頁  >  文章  >  資料庫  >  mongodb 3.4下遠端連線認證失敗該怎麼辦?

mongodb 3.4下遠端連線認證失敗該怎麼辦?

零下一度
零下一度原創
2017-07-03 16:33:201149瀏覽

這篇文章主要為大家介紹了在mongodb 3.4下遠端連線認證失敗的解決方法,文中透過範例程式碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。

前言

mongodb開啟或關閉授權功能時還是挺麻煩的,需要新建服務鍵入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}})

3.去重複建立使用者

> 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"

    }

  ]

}

4.可以使用Robomongo工具偵測是否可以訪問,這裡顯示是PASS了。

以上是mongodb 3.4下遠端連線認證失敗該怎麼辦?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn