mongodb 作為時下最為熱門的資料庫,那麼其安全驗證也是必不可少的,否則乙個沒有驗證的資料庫暴露出去,任何人可隨意操作,這將是非常危險的。我們可以通過使用為mongodb 建立使用者的方式來降低風險
mongodb 有乙個使用者管理機制,簡單描述為,有乙個管理使用者組,這個組的使用者是專門為管理普通使用者而設的,暫且稱之為管理員。管理員通常沒有資料庫的讀寫許可權,只有操作使用者的許可權, 因此我們只需要賦予管理員useradminanydatabase 角色即可。另外管理員賬戶必須在 admin 資料庫下建立,3.0 版本後沒有 admin 資料庫,但我們可
以手動 use 乙個。注:use 命令在切換資料庫時,如果切換到乙個不存在的資料庫,mongoddb
會自動建立該資料庫
管理員需要再admin資料庫下面建立,所以我們需要切換到admin資料庫(3.0版本後沒有這個資料庫,但是我們使用use admin 會自動為我們建立這個資料庫)普通使用者由管理員建立。通常需要指定某個資料庫來操作我們可以通過 db.system.users.find()函式來檢視 admin 庫中的所有使用者資訊。
目前再admin庫中沒有使用者,所以查無結果
再mongodb中我們可以用db.createuser()函式建立使用者
db.createuser(,roles: [
| "<
role
>
", ...
]});
1)user:新建使用者名稱
2)pwd:新建使用者密碼
4)roles:陣列型別,配置使用者的許可權
我們現在需要在 admin 庫中建立乙個名為 test的管理員使用者,密碼為 test,並為其賦予useradminanydatabase許可權(忘了許可權可以
看看上面的介紹),並通過'db'引數指定了它所對應的admin庫
db.createuser(]})接著我們用db.system.users.find()命令來檢視我們建立的使用者資訊(要首先進入admin資料庫下再使用這條命令!)
就此我們建立角色並賦予了個簡單的許可權就已經ok了。
再預設情況下mongodb是不開啟使用者認證的。如果我們新增使用者,那麼需要開啟使用者認證機制。通過修改mongodb.conf配置檔案,再檔案中新增auth=true即可(上篇博文配置的基礎上)
改完後是這個樣子。
然後重啟我們的mongodb服務(就是關閉再重新開啟!)
由於我們剛剛設定了以許可權的方式啟動mongodb,那麼我們再進入系統的話就不能直接操作了,需要進行認證!
如果我們沒認證直接操作命令(可以進行use 資料庫)會報錯,沒有許可權
所以我們需要輸入認證函式
格式:db.auth('user','pwd')
例如用我們剛剛建立的test賬戶
db.auth('test','test')
切記:
我們需要首先進入我們該使用者所對應的資料庫,否則就會像下面第一條命令這樣,
0 代表 失敗
1 代表登入成功
我們建立乙個名為day的資料庫,給這個資料庫新增乙個使用者,使用者名為day,密碼為day。並授予該使用者對day資料庫進行讀寫操作的許可權如果我們需要對已存在的使用者的角色做修改,那麼我們可以使用db.updateuser()函式來更新使用者橘色。注意,該函式需要當前使用者具有useradminanydatabase(如果還保持剛剛test賬戶的狀態,那麼可以跳過此步驟)
普通使用者需要由管理員建立並授權。所以,我們首先做的就是用管理員賬戶登入資料庫。
use命令進行切換的時候,如果庫不存在則自動建立該資料庫
use day根據我們上方的需求來建立。
db.createuser(]})開啟乙個新的客戶端(我這裡用的xshell),
因為我們已經配置了環境變數,所以我們只需要再任意目錄輸入mongo即可啟動客戶端
由於我們是再day資料庫中建立額day使用者,所以需要先切換到day庫
我們首先來認證下。
就此我們的普通使用者就已經建立成功了
更新使用者密碼的兩種方式:db.updateuser( "roles":[,])目前test管理員使用者具備useradminanydatabase使用者管理橘色,我們為該使用者新增乙個dbadminanydatabase資料庫管理角色
db.updateuser('test',,]})如果沒有提示任何資訊則表示更新成功。退出當前客戶端重新連線即可生效
show usres 命令
通過 show users 命令檢視到test使用者的角色已經發生了變化,增加了dbadminanydatabase角色許可權。
1)使用db.updateuser()函式更新密碼,必須有使用者管理許可權才能使用
2)使用db.changeuserpassword()函式更新密碼。必須有使用者管理全出現才能使用
2.4.1 db.updateuser()方式更新密碼通過db.dropuser()函式可以刪除指定的使用者。刪除成功後會返回true。在刪除使用者時候需要切換到建立使用者所指定的資料庫中才可以刪除。需求:使用db.updateuser()函式將test使用者的密碼修改為testtest
語法格式:
db.updateuser('使用者名稱',)如果未提示任何資訊則表示更新成功。退出當前客戶端重新連線認證即可。
重新使用test使用者登入
需求:
使用db.changeuserpassword()函式將test使用者的密碼修改為test
語法格式:
db.changeuserpassword('使用者名稱','新密碼')如果什麼都未提示則代表更新成功。退出當前客戶端重新連線認證即可
重新使用test使用者登入
就此更改密碼的兩種方式已經完成了。
注意:需要使用具有useradminanydatabase角色管理員使用者才可以刪除其它使用者
我們使用db.dropuser()函式將day使用者刪除day 使用者在day資料庫中,所以需要先切換到day資料庫中
我們可以看到,該函式返回了true,標識刪除成功!
mongodb 新增使用者及許可權設定詳解
例如 mysql安裝配置好後,有乙個自帶的mysql資料庫,裡面有一張user表,用來存放使用者,以及使用者許可權,而mongodb這個最像關係型的資料庫,有沒有這樣的表呢。一,掌握許可權,理解下面4條基本上就差不多 1,mongodb是沒有預設管理員賬號,所以要先新增管理員賬號,在開啟許可權認證。...
mongoDB初階系列一 使用者和許可權
對於資料庫而言,使用者和許可權是非常重要的一部分,因為這涉及到安全,那麼mongodb的使用者和許可權是怎麼樣的呢?本文所用的mongodb版本是3.6,作業系統是windows。對於mongodb,分為服務端和客戶端。在windows環境的安裝目錄下,直接雙擊開啟mongod.exe,即可開啟mo...
MongoDB 使用者許可權管理
安裝好mongdb 配置使用者訪問許可權後,在命令模式下發現show dbs 報錯,懵逼了不是配置許可權了麼。下面是我的解決回放 進入mongo 命令模式發現撥錯 r izwz947cvofre97sstzcmuz mongo mongodb shell version v3.4.2 connect...