MongoDB用户管理

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

创建用户

语法:
db.createUser(
{
user:<name_string>, #字符串
pwd:<password_strin>, #字符串
roles:[{role:<role_name>,db:<db_name>}] #数组
}
)

创建用户:

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

用户验证:

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

查看用户:
MongoDB用户管理

删除用户

db.dropUser(<user_name>) #删除某个用户,授受字符串参数
db.dropAllUsers() #删除当前库的所有用户

查询所有用户
> 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
确认test用户是否存在
> db.getUser("test")
null
删除所有用户
> db.dropAllUsers()
2

修改用户密码

要修改用户密码,要求用户具有changePassword或changeOwnPassword的权限,有以下两种方式用来修改用户密码:
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用户的密码后,原来的密码验证就失败了,但是当前这个会话还是可以正常执行操作,新会话则需要用修改后的密码进行验证

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

修改用户权限(角色):
修改用户角色也是使用db.updateUser()函数来实现的
我们先创建一个测试用户readtest,它只对test库具备读权限:
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 }"
    }
})

可以看到这个用户可以执行读操作,写操作是没有权限的,现在我们通过db.updateUser()来扩充它的权限,记其具有读写权限。
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 })

可以看到,当我们把readtest用户的角色从read改成readWrite时,它就具有了对test库的写权限。通过db.updateUser()我们可以实现用户权限的放大和缩小


本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/2072153


相关文章
|
安全 NoSQL MongoDB
20 MongoDB高级 - 用户管理安全
20 MongoDB高级 - 用户管理安全
134 1
|
NoSQL MongoDB 数据库
docker-compose部署MongoDB以及用户管理
docker-compose部署MongoDB以及用户管理
1243 0
|
NoSQL 安全 MongoDB
Python 数据库开发实战 -MongoDB的用户管理
Python 数据库开发实战 -MongoDB的用户管理
|
NoSQL Shell 数据安全/隐私保护
|
数据库 数据安全/隐私保护
mongodb3.x版本用户管理方法
db.auth() 作用:验证用户到数据库。 语法: db.auth( { user: , pwd: , mechanism: , digestPassword: } )   必填的是:用户名和密码   选填的是:mechanism 认证机制和摘要密码标志一个用户文档。
752 0
|
2月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
2月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
244 79
|
2月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
141 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
5月前
|
NoSQL MongoDB 数据库
数据库数据恢复——MongoDB数据库服务无法启动的数据恢复案例
MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的情况下拷贝数据库文件。将MongoDB数据库文件拷贝到其他分区后,对MongoDB数据库所在原分区进行了格式化操作。格式化完成后将数据库文件拷回原分区,并重新启动MongoDB服务。发现服务无法启动并报错。

推荐镜像

更多