1. 程式人生 > >mongo的身份驗證和授權

mongo的身份驗證和授權

配置 登陸 同名 以及 意思 margin info 它的 只讀

問題來源

技術分享圖片

剛裝好的mongo,準備登陸進去測一把的,結果就給我報這個錯,鄙人是新手,還不太清楚這個,現學一下~

Mongo的身份驗證

在上一篇安裝mongo的博客中(https://www.cnblogs.com/tuhooo/p/9673685.html),提供了一個簡單的配置文件,其中有個選項是

auth=true

這裏的意思是開啟身份驗證,有用戶,密碼,角色,權限之類的東西,如果把auth設為false的話,那麽mongo就相當於裸奔了,誰都可以連進來。如果服務器安全性挺高的,裸奔倒也不是問題。但是現在的版本還是推薦把這個auth給打開。

認證、授權和用戶

身份認證:驗證用戶的身份,你是誰

授權:判定用戶在通過了身份驗證的數據庫上可以進行那些操作,比如讀,寫,只讀,只寫等

auth=true會禁止對數據庫的匿名訪問。

Mongo中用戶的信息在system.users集合中,改集合存在於管理數據庫中(我這裏的是admin),它存儲了用戶id,密碼和創建該集合所面向的數據庫以及對用戶授權的權限。

技術分享圖片

在打印的用戶信息的第一行中,"user" : "tuhooo", "db" : "admin",表示了tuhooo這個用戶及其關聯的數據庫"admin",它們兩個唯一標識了Mongo中的一個用戶。如果兩個用戶具有相同名稱,但是關聯到了不同的數據庫,那麽它們被認為是兩個不同的用戶。

在用戶信息的倒數第二行:"roles" : [ { "role" : "read", "db" : "admin" }, { "role" : "userAdminAnyDatabase", "db" : "admin" } ]表明了tuhooo在這個用戶可以有不同數據庫的不同權限(這裏只有一個庫,因為我還沒來得及建測試庫)。如果兩個用戶具有相同的名稱但是關聯到了不同的數據庫,那麽它們被認為是兩個不同的用戶。

小結:

用戶名和關聯的數據庫唯一標識了Mongo中的一個用戶。

一個用戶可以在不同數據庫中具有不同授權級別的多個角色。

技術分享圖片

Mongo中的角色

Mongo中可用的角色有以下:

read

readWrite

dbAm

ensureIndex、dropIndex、reIndex、indexStats

userAdmin

clusterAdmin

readAnyDatabase

readWriteAndDatabase

userAdminAnyDatabase

dbAdminAnyDatabase

其他角色

從2.6版本開始,一個用戶管理員還可以通過提供集合級別以及命令級別的訪問權限來創建遵循最小權限策略的用戶定義的角色。用戶定義的角色僅作用於創建它的數據庫中,並且被數據庫


待續~有點事情~

mongo的身份驗證和授權