db.createUser( ... { ... user: root , ..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MongoDB用戶管理

發(fā)布時(shí)間:2020-07-24 02:33:31 來源:網(wǎng)絡(luò) 閱讀:21804 作者:emma_cql 欄目:關(guān)系型數(shù)據(jù)庫

創(chuàng)建用戶

語法:
db.createUser(
{
user:<name_string>, #字符串
pwd:<password_strin>, #字符串
roles:[{role:<role_name>,db:<db_name>}] #數(shù)組
}
)

創(chuàng)建用戶:

> db.createUser(
... {
...     user:"root",
...     pwd:"admin",
...     roles:[{role:"root",db:"admin"}]
... }
... )

用戶驗(yàn)證:

> db.auth("root","admin")
1

查看用戶:
MongoDB用戶管理

刪除用戶

db.dropUser(<user_name>) #刪除某個(gè)用戶,授受字符串參數(shù)
db.dropAllUsers() #刪除當(dāng)前庫的所有用戶

查詢所有用戶
> db.getUsers()
[
    {
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    },
    {
        "_id" : "admin.sysadmin",
        "user" : "sysadmin",
        "db" : "admin",
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    },
    {
        "_id" : "admin.test",
        "user" : "test",
        "db" : "admin",
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    }
]
刪除test用戶
> db.dropUser("test")
true
確認(rèn)test用戶是否存在
> db.getUser("test")
null
刪除所有用戶
> db.dropAllUsers()
2

修改用戶密碼

要修改用戶密碼,要求用戶具有changePassword或changeOwnPassword的權(quán)限,有以下兩種方式用來修改用戶密碼:
db.changeUserPassword(<user_name>,<new_password>)
db.updateUser(<user_name>,{update_object})

db.changeUserPassword()示例:

admin@undefined$ db.auth("root","admin")
1

admin@undefined$ db.changeUserPassword("root","123456")

admin@undefined$ db.auth("root","admin")
Error: Authentication failed.
0
admin@undefined$ db.auth("root","123456")
1
admin@undefined$ show dbs
admin  0.000GB
local  0.000GB
test   0.000GB
test1  0.000GB

可以看到在修改root用戶的密碼后,原來的密碼驗(yàn)證就失敗了,但是當(dāng)前這個(gè)會話還是可以正常執(zhí)行操作,新會話則需要用修改后的密碼進(jìn)行驗(yàn)證

db.updateUser()示例:

admin@undefined$ db.auth("root","123456")
1

admin@undefined$ db.updateUser("root",{pwd:"admin123"})

admin@undefined$ db.auth("root","admin123")
1
admin@undefined$ db.auth("root","123456")
Error: Authentication failed.
0

修改用戶權(quán)限(角色):
修改用戶角色也是使用db.updateUser()函數(shù)來實(shí)現(xiàn)的
我們先創(chuàng)建一個(gè)測試用戶readtest,它只對test庫具備讀權(quán)限:
db.createUser(
{
user:"readtest",
pwd:"123456",
roles:[{role:"read",db:"test"}]
}
)

admin@undefined$ db.auth("readtest","123456")
1
admin@undefined$ use test
switched to db test
test@undefined$ show tables
goods
users
test@undefined$ db.goods.find()
{ "_id" : ObjectId("5a7c5b7e83dba596ccad3ac0"), "sn" : "fhbowhnlerio12o47", "category" : "food" }
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"})
WriteResult({
    "writeError" : {
        "code" : 13,
        "errmsg" : "not authorized on test to execute command { insert: \"goods\", documents: [ { _id: ObjectId('5a8ef5aa3cdd503ad3903fcc'), sn: \"04t68gjsoe076\", category: \"beauty\" } ], ordered: true }"
    }
})

可以看到這個(gè)用戶可以執(zhí)行讀操作,寫操作是沒有權(quán)限的,現(xiàn)在我們通過db.updateUser()來擴(kuò)充它的權(quán)限,記其具有讀寫權(quán)限。
admin@undefined$ db.updateUser("readtest",{"roles":[{role:"readWrite",db:"test"}]})

admin@undefined$ db.auth("readtest","123456")
1
admin@undefined$ use test
switched to db test
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"})
WriteResult({ "nInserted" : 1 })

可以看到,當(dāng)我們把readtest用戶的角色從read改成readWrite時(shí),它就具有了對test庫的寫權(quán)限。通過db.updateUser()我們可以實(shí)現(xiàn)用戶權(quán)限的放大和縮小

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI