1.連線進入mongod server之後,進入admin資料庫
mongo
use admin
2.新增最高權限用戶
db.addUser(‘username’,’passwd’,’readOnly’)
說明:
db.addUser這個命令就是增加用戶用的,第一個參數username就是帳號,第二個參數passwd是密碼,第三個參數比較特別,他可以設定此帳號的權限是否是唯讀的,設為1則是唯讀,設為0則是非唯讀,也就是可以寫入資料,預設是非唯讀
另外需注意大小寫有差,另外帳號跟密碼要用單引號框住以視為字串
範例:
db.addUser(‘root’,’0000′,1) ? ? //帳號root,密碼0000,權限是唯讀(只能讀、不能寫入)
3.再來,就可以去幫其他資料庫新增用戶,例如幫test資料庫增加一個「root_test」用戶
不過在幫其他資料庫建立用戶之前,必須先登入到有資格儲存資料的用戶(Not ReadOnly),以目前來講,只有最高權限,所以就登入到最高權限的帳戶,才能幫其他資料庫建立用戶
use admin ? ?//要登入最高權限,都必須切換到admin資料庫
db.auth(‘root’,’0000′)
use test ? ? ? //切換到test db
db.addUser(‘root_test’,’0000′)
說明:db.auth就是登入用的命令,第一個參數是帳號,第二個參數是密碼
※另外請大家注意,在Mongodb裡面, 用戶的新增是「沒有全域性的」,也就是說你在testA資料庫增加了一個root帳號,你也可以在testB新增一個root帳號,這也就是為何登入最高權限時,要先切換到admin資料庫,因為最高權限的帳號是屬於admin資料庫的,只不過系統設定admin資料庫的帳號有最高權限
4.如此,就算是啟動帳戶保護了,你可以在去幫其他資料庫設定帳戶,之後連線進來時,看你要使用哪個資料庫,就先切換進入該資料庫,然後再做登入即可
5.如果你想要刪除掉某個資料庫的某個用戶,先切換到該資料庫,然後再刪除他即可,例如,刪除test db的root_test用戶(需要是登入狀態,可以修改資料)
use test
db.removeUser(‘root_test’)
如果要檢視該資料庫目前擁有的帳戶有哪些,可以輸入db.system.users.find()
這是因為所有帳戶資料,都存在system.users這個Collection裡面
總結:前面講的有點紛亂,這邊做個結語,簡而言之,要讓Mongodb能夠有帳戶保護的功能,你必須先新增一組最高權限的帳戶,而所謂最高權限,就是在admin資料庫建立的帳戶就是最高權限,建立完此組帳戶之後,要記得先登入最高權限,然後再去幫個別資料庫新增用戶,另外Mongodb裡面的用戶沒有全域性,A資料庫的用戶是屬於A的,B資料庫的用戶是屬於B的,所以在登入、刪除用戶時,都必須要切換到正確的資料庫,例如A、 B都有root這個帳號,我要刪除A資料庫的test,就要先use A,然後再db.removeUser(‘root’)才可以,不然可能會刪錯資料庫的用戶,或者我要登入的是B資料庫的root,那我就要先切換到B資料庫在登入,如果我在A資料庫輸入db.auth(),那我登入到的其實是A資料庫的帳戶,是不能存取B資料庫的資料的!
還有第一次幫一般資料庫(非admin db)建立用戶時,需要先登入admin資料庫的用戶(也就是最高權限),登入之後才可以新增「第一筆」用戶資料,但是當一般資料庫有了第一筆用戶資料時,你就可以直接登入該筆用戶,然後做新增用戶的動作,而不需要登入到最高權限,這是因為在第一次建立用戶時,該資料庫裡面沒有任何用戶具有存取的權限,除了最高權限,然而addUser其實是把用戶資料寫進指定資料庫的Collection裡面,所以必須先登入最高權限,獲得寫入的權力以後,才能新增用戶。
在Mongodb裡面,你可以設定所謂的白名單,也就是說只有指定的IP才能連線到Mongod Server
設定上很簡單,只要在啟動mongod時,加入參數–bind_ip就可以了,例如我要限制只有本機可以登入,則啟動mongod時的命令是:
mongod –bind_ip 127.0.0.1
不過目前還在研究能不能綁定多個IP,目前的操作方式只能指定一個IP做白名單…
原文地址:Mongodb的安全性設定:帳戶設定、登入IP設定, 感谢原作者分享。
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com