MongoDB開啟許可權驗證及設定使用者名稱密碼
一、MongoDB資料庫角色
內建的角色
資料庫使用者角色:read、readWrite;
資料庫管理角色:dbAdmin、dbOwner、userAdmin;
叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
備份恢復角色:backup、restore;
所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超級使用者角色:root // 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
內部角色:system
角色說明:
Read:允許使用者讀取指定資料庫
readWrite:允許使用者讀寫指定資料庫
dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
root:只在admin資料庫中可用。超級賬號,超級許可權
二、MongoDB使用者的操作
1.新建管理員使用者
>use admin > db.createUser( { user: "adminUser", pwd: “admin123”, roles: [{role: ”userAdminAnyDatabase”,db:”admin”}] } ) #結果 > Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
2.建立普通使用者
>use foo
>show roles #可以檢視角色
> db.createUser(
{
user: "simpleUser",
pwd: “123456”,
roles: [“readWrite”,”dbAdmin”,”userAdmin”]
}
)
3.檢視已存在的使用者
>db.system.users.find()
4.刪除使用者
>db.system.users.remove({user:”simpleUser”})
注:在操作使用者時,啟動mongod服務時儘量不開啟授權
三、開啟許可權驗證
在啟動時指定--auth即需要授權才能操作
#開啟服務
> mongod --auth --dbpath /home/user1/mongodb/data --logpath /home/user1/mongodb/log/logs --fork
#客戶端連線並認證
>mongo
>use foo
>db.auth(“simpleUser”,”123456”)
每次只有認證後才能操作資料
參考地址:https://blog.csdn.net/u013066244/article/details/53874216
https://blog.csdn.net/qq_32502511/article/details/80619277