mongodb設置密碼
mongodb密碼和傳統數據如mysql等有些區別:
mongodb的用戶名和密碼是基於特定數據庫的,而不是基於整個系統的。所有所有數據庫db都需要設置密碼
mongodb設置管理用戶和密碼:
show dbs
# 在mongodb新版本里並沒有admin數據庫,但是並不妨礙操作。
# 進入admin數據庫
use admin
# 創建管理員賬戶
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
> mongodb中的用戶是基於身份role的,該管理員賬戶的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用戶管理身份,’AnyDatabase’ 代表可以管理任何數據庫。
Mongodb數據賬戶權限詳細信息
數據庫用戶角色:read、readWrite;
數據庫管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
備份恢復角色:backup、restore;
所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級用戶角色:root
內部角色:__system
Read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以在指定數據庫里創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
root:只在admin數據庫中可用。超級賬號,超級權限
驗證用戶添加是否成功
db.auth("useradmin", "adminpassword") 如果返回1,則表示成功。
exit退出系統
db.auth()方法理解為 用戶的驗證功能
修改配置
sudo vi /etc/mongod.conf
找到#security: 取消注釋,修改為:
security:
authorization: enabled #注意縮進,縮進參照配置文件其他配置。縮進錯誤可能重啟不成功。
重啟mongodb
sudo service mongod restart
進入mongodb, 管理員賬戶登錄,用該賬戶創建其他數據庫管理員賬號
use admin
db.auth("useradmin", "adminpassword")
新建你需要管理的mongodb 數據的賬號密碼。
use yourdatabase
db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db:"yourdatabase" }] })
rote:dbOwner 代表數據庫所有者角色,擁有最高該數據庫最高權限。比如新建索引等
新建數據庫讀寫賬戶
use yourdatabase
db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite",db: "yourdatabase" }] })
該用戶用於該數據的讀寫,只擁有讀寫權限。
在數據的用戶名和密碼就建好了。
可以使用:mongodb://youruser2:yourpassword2@localhost/yourdatabase來鏈接
轉載文檔
https://juejin.im/post/5b0519cf518825426539d05e
https://segmentfault.com/a/1190000015603831