MongoDB下配置使用者權限
MongoDB預設設定為無許可權訪問限制註:研究成果基於Windows平台
在部署mongodb成功後,進入控制台:輸入命令:mongod use admin,你會發現該DB下包含了一個system.user表,呵呵,沒錯,這個表就等同於MsSql中的使用者表,用來存放超級管理員的,那我們就往它裡面添加一個超級管理員試試看裡我添加一個超級管理使用者,username為admin,password也為admin,即然我們添加了超級管理員,那咱們就來測試下,看看咱們再次串連MongoDB需不需要提示輸入使用者名稱、密碼,我們先退出來
輸入命令:mongod use admin
輸入命令:show collections,查看該庫下所有的表,你會發現,MongoDB並沒有提示你輸入使用者名稱、密碼,那就奇怪了,這是怎麼回事呢?在文章最開始提到了,
MongoDB預設設定為無許可權訪問限制,即然這樣,那我們就先把它設定成為需要許可權訪問限制,咱們再看看效果,怎麼設定呢?
在註冊表中,找到MongoDB的節點,在它的ImgPath中,我們修改一下,加入 -auth,如下所示:mongod
"D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service
註:進入系統註冊表(WIN+R-->regedit),找到[HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet-->Services-->MongoDB]在右邊的健-值列表中打到 “ImagePath”
修改完成後再次進入控制台,發現要求輸入密碼驗證了。
輸入使用者名稱和密碼就可以驗證了。
別急,還沒有完。
當退出視窗後,再次啟動進入視窗後,通過use mydatabase來切換另一個庫後,查看庫下面的表,發現又沒有許可權了。但是,通過之前命令先進入admin庫,然後驗證使用者名稱和密碼後再進入mydatabase庫就沒有問題。這樣我們就可以進入mydatabase庫後在添加使用者 db.addUser(username,password);
這樣就可以通過使用者名稱和密碼來進入mydatabase庫了。
同樣在linux的環境下,需要在啟動的服務後面添加auth的參數來啟動許可權存取控制。