溫馨提示×

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

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

MongoDB用戶及權(quán)限管理(二):用戶管理

發(fā)布時(shí)間:2020-06-12 18:03:55 來(lái)源:網(wǎng)絡(luò) 閱讀:4302 作者:老書生 欄目:MongoDB數(shù)據(jù)庫(kù)


一、創(chuàng)建管理員賬號(hào)

  1. 下面開(kāi)始創(chuàng)建一個(gè)帳號(hào),該賬號(hào)需要有grant權(quán)限,即:賬號(hào)管理的授權(quán)權(quán)限。注意一點(diǎn),帳號(hào)是跟著庫(kù)走的,所以在指定庫(kù)里授權(quán),必須也在指定庫(kù)里驗(yàn)證(auth)

> use admin

switched to db admin

> db.createUser(

{

    user:  "dba",

    pwd:  "dba",

    roles:  [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

2.編輯mongodb配置文件,開(kāi)啟驗(yàn)證模塊

security:

    authorization: enabled

3.重啟mongod.

4.再次登錄mongodb

#mongo

> show dbs

2017-01-10T19:30:30.924+0800 E QUERY    [main] Error: listDatabases failed:{

         "ok" : 0,

         "errmsg" : "not authorized on admin to execute command  { listDatabases: 1.0 }",

         "code" : 13,

         "codeName" : "Unauthorized"

}

5.會(huì)報(bào)出如上錯(cuò)誤,這是因?yàn)殚_(kāi)啟auth模塊后,需要進(jìn)行驗(yàn)證。如果需要使用剛才創(chuàng)建的管理員賬戶,則需要到admin庫(kù)下進(jìn)行驗(yàn)證,1表示驗(yàn)證成功。

>use admin

>db.auth('dba','dba')

1

6.驗(yàn)證成功,再次執(zhí)行命令:

> show dbs

admin  0.000GB

local  0.000GB

即可執(zhí)行成功。


二、創(chuàng)建普通用戶賬號(hào)

userAdminAnyDatabase的角色具有在任何數(shù)據(jù)庫(kù)下創(chuàng)建用戶的權(quán)限,下面用剛剛創(chuàng)建的dba用戶創(chuàng)建普通用戶。

1.創(chuàng)建只讀賬號(hào)

use db1

db.createUser(

  {

      user:  "test1",

      pwd:  "test1",

       roles: [ { role: "read", db: "db1" } ]

  }

)

2.創(chuàng)建讀寫賬號(hào)

use db1

db.createUser(

  {

      user:  "test2",

      pwd:  "test2",

       roles: [ { role: "readWrite", db: "db1" } ]

  }

)

注意:只有在當(dāng)前庫(kù)下創(chuàng)建的用戶才能在當(dāng)前庫(kù)下進(jìn)行驗(yàn)證,如果在admin庫(kù)下創(chuàng)建的其他庫(kù)的用戶則需要在admin下進(jìn)行驗(yàn)證。


三、創(chuàng)建超級(jí)管理員用戶

MongoDBV3.0版本之后內(nèi)置了root 角色,也就是結(jié)合了readWriteAnyDatabasedbAdminAnyDatabase、userAdminAnyDatabaseclusterAdmin4個(gè)角色權(quán)限,類似于ORACLEsysdba角色,但是MongoDB的超級(jí)管理員用戶名稱是可以隨便定義的。當(dāng)然如此高權(quán)限的用戶還是不建議使用。

db.createUser(

  {

      user:  "dbroot",

      pwd:  "dbroot",

       roles: [ { role: "root", db: "admin" } ]

  }

)


四、查看用戶信息

db.getUser("test1")

> db.getUser("test1")

{

         "_id" : "admin.test1",

         "user" : "test1",

         "db" : "admin",

        "roles" : [

                 {

                        "role" :  "clusterAdmin",

                        "db" :  "admin"

                 }

        ]

}


五、修改用戶信息

可修改用戶的如下信息:

角色、密碼、customData

db.updateUser( "test1",

{

     customData:{employeeID:"0x3039"},

         roles:[

               {role:"read",db:"admin"}

         ],

     pwd:"test1password"

}

)


六、修改用戶密碼

db.changeUserPassword("user","password")


七、刪除用戶

db.system.users.remove({user:"user1"});

db.dropUser("test1")


八、授權(quán)給用戶

原有權(quán)限不變的情況下,授予readWrite,read admin的權(quán)限:

db.grantRolesToUser(

   "test1",

   [  "readWrite",

      {  role: "read", db: "admin" }

   ]

)

 

九、回收權(quán)限

回收test1用戶的readWriteread admin的權(quán)限。

db.revokeRolesFromUser(

     "test1",

    [ {  role: "read", db: "admin" },

           "readWrite"

         ]

)


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

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

AI