標籤:不能 image ons strong 帳號 mongodb執行個體 啟動 認證 切換使用者
一、MongoDB安全校正的重要性
每個MongoDB執行個體中的資料庫都可以有許多使用者。如果沒有開啟安全校正,限制使用者權限,則每個進到資料庫的使用者都能任意的對資料庫資料進行讀,寫甚至是讀寫操作。這樣的情境在實際的應用中是非常危險的,容易導致資料丟失,誤刪等事故,所以資料庫服務開啟安全校正,十分有必要。
二、MongoDB如何開啟安全校正
一旦MongoDB開啟了安全檢查,則必須是資料庫認證使用者才有權力對資料進行讀,寫或讀寫操作。在進行安全檢查之前,一定要至少有一個管理員帳號,這是為什麼呢?因為只有管理員可以讀寫任何的資料庫,執行特定的管理命令,如為某個資料庫添加特定使用者,限制讀寫權限等。
如,為admin資料庫添加了超級管理員root,密碼為1234,方便在資料庫開啟安全檢查後,使用該使用者登入後能夠進行資料庫的管理,添加使用者的文法為
db.addUser("使用者名稱","密碼",是否唯讀true|false)
然後為kaiye資料庫添加了兩個使用者,文法分別為
db.addUser("haha","123"):haha使用者對kaiye資料庫具有讀寫權限
db.addUser("hehe","123",true):hehe使用者對kaiye資料庫只有讀許可權
重啟服務端,並在開啟服務端命令後面添加 --auth,就啟動了MongoDB的安全校正了。
mongod --dbpath=C:\\mymongodb --port 27017 --auth
在服務端開啟安全校正後,分別登入haha和hehe使用者,進行資料的讀寫操作,在show collections時,會報無許可權的異常。
此時需要使用資料庫的使用者進行認證登入,文法:db.auth("使用者名稱","密碼"),登入剛才添加的hehe使用者(添加了唯讀許可權)後,發現只能對資料進行檢索查詢,卻不能進行資料的插入操作,這是因為剛才在為kaiye資料庫添加hehe使用者時,將addUser()函數的第三個值設定成了true,也就是該使用者只有唯讀許可權,所以無法進行寫操作。
切換使用者,即登入同時具有讀寫權限的haha使用者,會發現既能進行find操作,也能進行insert操作。
MongoDB的安全校正