mongodb3.03開啓認證(本人驗證過)

下載了最新mongodb3.03版本,當使用--auth 參數命令行開啓mongodb用戶認證時遇到很多問題,現總結如下: 
(百度上搜到的基本都是老版本的,看到db.addUser的就是,請忽略) 
Windows下我做了一個bat文件,用來啓動mongodb,命令行如下: 
mongod --dbpath db\data --port 27017 --directoryperdb --logpath db\logs\mongodb.log --logappend --auth 
最後的參數就是開啓和關閉認證,如果是conf配置文件,應該是auth=true或false 
1,首先關閉認證,也就是不帶--auth參數,啓動mongodb 
2,使用命令行進入mongodb目錄,輸入mongo命令,默認進入test數據庫 
3,use userdb  切換到自己的數據庫,輸入db,顯示userdb 
4,創建用戶,角色爲dbOwner,數據庫爲userdb,命令行應該是db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]}) 
5,切換到admin數據庫,use admin,db ,顯示admin,db.shutdownServer()關閉服務器,填上認證參數,啓動mongodb;以前的版本此時使用mongovue就可以使用myuser登錄到userdb數據庫上了,但是3.0.3版本不行,打開mongodb.log文件發現如下錯誤 

authenticate db: userdb { authenticate: 1, nonce: "xxx", user: "myuser", key: "xxx" } 
2015-06-02T09:57:18.877+0800 I ACCESS   [conn2] Failed to authenticate myuser@userdb with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document 


此1-5步驟針對是3.0.3以前版本已經ok,如果是3.0.3,mongodb加入了SCRAM-SHA-1校驗方式,需要第三方工具配合進行驗證,下面給出具體解決辦法: 
首先關閉認證,修改system.version文檔裏面的authSchema版本爲3,初始安裝時候應該是5,命令行如下: 
> use admin 
switched to db admin 
>  var schema = db.system.version.findOne({"_id" : "authSchema"}) 
> schema.currentVersion = 3 

> db.system.version.save(schema) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 

不過如果你現在開啓認證,仍然會提示AuthenticationFailed MONGODB-CR credentials missing in the user document 
原因是原來創建的用戶已經使用了SCRAM-SHA-1認證方式 
> use admin 
switched to db admin 
> db.system.users.find() 
[...] 
{ "_id" : "userdb.myuser", "user" : "myuser", "db" : "userdb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXXXXXXXXXXXXXXXXXXXXXXX", "storedKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX", "serverKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXX" } }, "roles" : [ { "role" : "dbOwner", "db" : "userdb" } ] } 

解決方式就是刪除剛剛創建的用戶,重新重建即可: 
> use userdb 
switched to db userdb 
> db.dropUser("myuser") 
true 
>db.createUser({user:'myuser',pwd:'123456',roles:[{role:'dbOwner',db:'userdb'}]}) 

然後關閉服務器,開啓認證,重啓服務器,用mongovue連接,一切OK 

轉載自:http://21jhf.iteye.com/blog/2216103

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章