1、進入mongodb的shell :
mongo
2、切換資料庫
use admin
3、建立admin超級管理員使用者
指定使用者的角色和資料庫:
(注意此時新增的使用者都只用於admin資料庫,而非你儲存業務資料的資料庫)
(在cmd中敲多行程式碼時,直接敲回車換行,最後以分號首尾)
db.createUser(
{ user: "admin",
customData:{description:"superuser"},
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
user欄位,為新使用者的名字;
pwd欄位,使用者的密碼;
cusomData欄位,為任意內容,例如可以為使用者全名介紹;
roles欄位,指定使用者的角色,可以用一個空陣列給新使用者設定空角色。在roles欄位,可以指定內建角色和使用者定義的角色。
超級使用者的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對所有資料庫的訪問,僅僅是訪問而已)。
db是指定資料庫的名字,admin是管理資料庫。
不能用admin資料庫中的使用者登入其他資料庫。注:只能檢視當前資料庫中的使用者,哪怕當前資料庫admin資料庫,也只能檢視admin資料庫中建立的使用者。
4、建立一個不受訪問限制的超級使用者
(跳出三界之外,不在五行之中)
db.createUser(
{
user:"root",
pwd:"pwd",
roles:["root"]
}
)
5、建立一個業務資料庫管理員使用者
(只負責某一個或幾個資料庫的増查改刪)
> db.createUser({
user:"user001",
pwd:"123456",
customData:{
name:`jim`,
email:`jim@qq.com`,
age:18,
},
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
`read`// 對其他資料庫有隻讀許可權,對db001、db002是讀寫許可權
]
})
- 資料庫使用者角色: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資料庫中可用。超級賬號,超級許可權
6、檢視建立的使用者
show users 或 db.system.users.find() 或 db.runCommand({usersInfo:"userName"})
7、修改密碼
use admin
db.changeUserPassword("username", "xxx")
8、修改密碼和使用者資訊
db.runCommand(
{
updateUser:"username",
pwd:"xxx",
customData:{title:"xxx"}
}
)
重要的一步
啟用許可權驗證(別TM的武裝了大半天,大門還一直開著,還抱怨我方防禦塔怎麼一直被摧毀)
mongo --auth
或者修改mongo.conf,最後一行新增
#啟用許可權訪問
auth=true
9、重新啟動mongodb
net stop mongodb;
net start mongodb;
- 和使用者管理相關的操作基本都要在admin資料庫下執行,要先use admin;
- 如果在某個單一的資料庫下,那隻能對當前資料庫的許可權進行操作;
- db.addUser是老版本的操作,現在版本也還能繼續使用,建立出來的user是帶有root role的超級管理員。