mongodb3.03開啟認證
原文地址:http://21jhf.iteye.com/blog/2216103
下載了最新mongodb3.03版本,當使用–auth 引數命令列開啟mongodb使用者認證時遇到很多問題,現總結如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,請忽略)
Windows下我做了一個bat檔案,用來啟動mongodb,命令列如下:
mongod –dbpath dbdata –port 27017 –directoryperdb –logpath dblogsmongodb.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
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
相關文章
- Docker開啟TLS和CA認證DockerTLS
- Ambari啟用Kerberos認證ROS
- 蘋果開發者賬號開啟雙重認證步驟蘋果
- github在開啟雙因素認證後無法pushGithub
- 中德啟動網路安全認證認可合作
- 智慧養老認證 app:開啟便捷養老新時代APP
- openstack 啟動認證服務錯誤
- Win8如何開啟802.1x網路身份認證
- 如何在OS X 10.8中開啟未認證的應用
- 開課啦!《綠盟安全服務技術認證-安全運維》報名開啟運維
- 微軟認證:遠端開啟遠端計算機的遠端桌面微軟計算機
- [ Office 365 開發系列 ] 身份認證
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- 密碼雙保險!谷歌即將預設開啟雙因子登入認證密碼谷歌
- Oracle中兩種認證方式:OS認證與口令檔案認證Oracle
- Scrum.org認證PSPO官方認證班/專業Scrum產品負責人(PSPO)認證公開班Scrum
- 認證授權方案之JwtBearer認證JWT
- HTTP認證之摘要認證——Digest(一)HTTP
- Laravel 認證原理及完全自定義認證Laravel
- 網路身份認證——Kerberos配置及認證ROS
- RocketMq開啟安全認證ACL-解決伺服器系統安全漏洞MQ伺服器
- 增強版實名認證介面-Java身份證實名認證介面程式碼-身份認證Java
- Passport 認證Passport
- Java身份證實名認證介面解鎖認證新速度Java
- 使用OpenSSH證書認證
- 關於os認證和口令檔案認證
- 快速開始api開發(四)登入與認證API
- 開發示例、C++身份證二要素實名認證介面C++
- 關於os認證和口令檔案認證(轉)
- 關於HttpClient繞過SSL認證以及NTLM認證HTTPclient
- Oracle OS認證與口令檔案認證詳解Oracle
- 計算機認證公司的認證網址 (轉)計算機
- Basic認證和Bearer Token認證的區別
- 網路新聞編輯今後持證上崗 上海已啟動認證
- JWT 多表認證JWT
- Laravel Web 認證LaravelWeb
- CB認證流程