之前項目連接的Mongodb都是空口令的,即沒有用戶名和密碼就能直接連接上,然後突然接到一個需求,需要用戶名密碼登錄,空口令不安全,以下是我的修改方案以後遇到的問題:
將原來的mongo url爲:mongodb://xx.xx.xxx.xxx:xxxxx/dbName
改爲:mongodb://userName:[email protected]:xxxx/dbName
同時在mongo服務器中將dbName這個數據庫設置了用戶名(userName)和密碼(password)
但是在項目執行的時候報了
not authorized on test to execute command mongo這個錯,即及時給dbName分配了用戶名密碼但是還是沒有權限執行先關操作
然後就參考了下面一個博主的文章並且解決了這個問題:
http://www.voidcn.com/article/p-stetasvk-bhr.html
主要步驟是:
在mongo中,先切換到admin用戶,然後執行命令創建一個角色:
db.createRole({role:'sysadmin',roles:[],privileges:[{resource:{anyResource:true},actions:['anyAction']}]})
接着再切換到當前所需使用的dbName數據庫,執行命令新建一個用戶,使用這個角色,注意,這個角色的db是admin:
db.createUser({user:'abc', pwd:'123',roles:[{role: 'sysadmin',db:'admin'}]})
再次運行代碼,代碼報錯消失