mongodb用户管理1

对于db,为保证数据的安全性,隔离用户权限,阻止非法用户对数据的访问,用户账户的管理十分重要。

1.db.auth()用户认证

db.auth( <username>, <password> )

例如:

db.auth( "test","test" )

认证成功返回1,失败返回0
2.用户创建db.createUser()

可参考https://docs.mongodb.com/manual/reference/method/db.createUser/

添加用户的字段,一般有:
1.user 用户名,唯一
2.roles 用户角色,数组类型
3.pwd 密码

用户的角色:

read: 读权限当前数据库
readWrite:读写指定数据库
dbAdmin: 读写指定数据库以及清理修改,压缩,获取统计信息执行检测
userAdmin:指定数据库里创建、删除和管理用户
clusterAdmin: 赋予用户所有分片和集群,连接相关函数的管理权限,创建,删除数据库。
readAnyDatabase: 所有数据库的读权限
readWriteAnyDatabase:所有数据库的读写权限
userAdminAnyDatabase:所有数据库的userAdmin权限
dbAdminAnyDatabase: 所有数据库的dbAdmin权限。

先创建两个测试数据库

[root@mongodb ~]# mongo
> use mogotest
switched to db mogotest
> db.movie.insert({"name":"abc"})
WriteResult({ "nInserted" : 1 })
> 
> use mogotest2
switched to db mogotest2
> db.er.insert({"des":"abc"})
WriteResult({ "nInserted" : 1 })
> show dbs
local      0.000GB
mogotest   0.000GB
mogotest2  0.000GB
> 

创建一个test1-1 只有读权限的用户:

> use mogotest
switched to db mogotest
> db.createUser(
     { user: "test1-1",
       pwd: "test",
       roles: [ "read"]
     }
   )  

Successfully added user: { "user" : "test1-1", "roles" : [ "read" ] }

db.auth验证

> db.auth("test1-1","test")
1

创建跨db的用户

db.createUser( { user: "Admin01",
                 pwd: "admin",
                 customData: { employeeId: 12345 },
                 roles: [ { role: "read", db: "mogotest" },
                          { role: "readWrite", db: "mogotest2" },
                          "readWrite"] },
               { w: "majority" , wtimeout: 5000 } )

3.显示用户
当前数据库用户

show user
> show users;
{
        "_id" : "mogotest.test1-1",
        "user" : "test1-1",
        "db" : "mogotest",
        "roles" : [
                {
                        "role" : "read",
                        "db" : "mogotest"
                }
        ]
}

整个mongodb中的用户
需要切换到admin下,否则没有输出
use admin
db.system.users.find();
db.system.users.find().count();可以统计有多少个用户

4.更新用户db.updateUser()
用户创建完成后,需要修改用户则使用updateUser
注:updateuser能够完全替换掉原来的字段值,包括用户roles的数组
当需要更新roles数组的时候,它是完全替换之前的值,如果要新增或添加roles而不是代替它
则使用方法: db.grantRolesToUser() 或 db.revokeRolesFromUser()

> db.system.users.find();
{ "_id" : "mogotest2.test", "user" : "test", "db" : "mogotest2", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "UT0k2j3AFO1PjgBd4Q0wtg==", "storedKey" : "gkkQCtIEp8d2rKSo5iw/qwwW448=", "serverKey" : "XG73AnDsUSW58U74Mn/xoCus9Sg=" } }, "roles" : [ { "role" : "readWrite", "db" : "mogotest2" } ] }
{ "_id" : "mogotest2.test2", "user" : "test2", "db" : "mogotest2", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "fHsq3B25hzVKgqRc8GRCjg==", "storedKey" : "1tLoA2UDYJSH3TNcbS7oULUXX7I=", "serverKey" : "Gl0sjokLF2roh/OtrA7Ca8NsTao=" } }, "roles" : [ { "role" : "readWrite", "db" : "mogotest2" } ] }
{ "_id" : "mogotest2.test3", "user" : "test3", "db" : "mogotest2", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "mpqOPx3Xsi+5ObYGHsz9QQ==", "storedKey" : "JTr+5UTW9AQFYra7SBgavIpo7N4=", "serverKey" : "ENyDXBhm+soYtXl3Kv8+ouq+qpQ=" } }, "roles" : [ { "role" : "readWrite", "db" : "mogotest2" } ] }
>  
> db.system.users.find().count();
9

例如:

更新前:
{
        "_id" : "mogotest.test1-1",
        "user" : "test1-1",
        "db" : "mogotest",
        "roles" : [
                {
                        "role" : "read",
                        "db" : "mogotest"
                }
        ]
}

更新:
db.updateUser( "test1-1",
               {
                 roles : [
                           { role : "readWrite", db : "mogotest"  }
                         ]
                }
             )

更新后:

{
        "_id" : "mogotest.test1-1",
        "user" : "test1-1",
        "db" : "mogotest",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "mogotest"
                }
        ]
}

演示update替换原来roles的属性:

更新前:
{
        "_id" : "mogotest.Admin01",
        "user" : "Admin01",
        "db" : "mogotest",
        "customData" : {
                "employeeId" : 12345
        },
        "roles" : [
                {
                        "role" : "read",
                        "db" : "mogotest"
                },
                {
                        "role" : "readWrite",
                        "db" : "mogotest2"
                },
                {
                        "role" : "readWrite",
                        "db" : "mogotest"
                }
        ]
}

更新
db.updateUser( "Admin01",
               {
               "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "mogotest2"
                },
                {
                        "role" : "readWrite",
                        "db" : "mogotest"
                }
               ]
              }
            )

更新后:
{
        "_id" : "mogotest.Admin01",
        "user" : "Admin01",
        "db" : "mogotest",
        "customData" : {
                "employeeId" : 12345
        },
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "mogotest2"
                },
                {
                        "role" : "readWrite",
                        "db" : "mogotest"
                }
        ]
}

原来的
{
“role” : “read”,
“db” : “mogotest”
},

已经被替换掉

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB 中,可以通过以下方式进行用户管理: 1. 创建用户: 使用 `db.createUser()` 方法创建用户。例如,创建一个用户名为 "admin",密码为 "password",角色为 "userAdminAnyDatabase" 的用户可以执行以下命令: ``` db.createUser( { user: "admin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) ``` 2. 删除用户: 使用 `db.dropUser()` 方法删除现有用户。例如,删除名为 "admin" 的用户可以执行以下命令: ``` db.dropUser("admin") ``` 3. 修改用户密码: 使用 `db.changeUserPassword()` 方法修改现有用户的密码。例如,将名为 "admin" 的用户的密码修改为 "newpassword" 可以执行以下命令: ``` db.changeUserPassword("admin", "newpassword") ``` 4. 切换到其他数据库并管理用户: 使用 `use <db>` 命令切换到其他数据库,然后使用上述命令进行用户管理。 5. 查看当前数据库的用户: 使用 `db.getUsers()` 方法查看当前数据库的用户列表。例如,查看当前数据库(如 "admin")的用户列表可以执行以下命令: ``` db.getUsers() ``` 6. 查看指定数据库的用户: 使用 `db.getSiblingDB(<db>).getUsers()` 方法查看指定数据库的用户列表。例如,查看数据库 "mydb" 的用户列表可以执行以下命令: ``` db.getSiblingDB("mydb").getUsers() ``` 7. 用户认证: 使用 `db.auth()` 方法对用户进行身份验证。例如,使用名为 "admin" 的用户和密码 "password" 进行身份验证可以执行以下命令: ``` db.auth("admin", "password") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值