博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB用户管理
阅读量:5885 次
发布时间:2019-06-19

本文共 3165 字,大约阅读时间需要 10 分钟。

创建用户

语法:

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 dbsadmin  0.000GBlocal  0.000GBtest   0.000GBtest1  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 testswitched to db test
test@undefined$ show tablesgoodsusers
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 testswitched 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

转载地址:http://lcmix.baihongyu.com/

你可能感兴趣的文章
Android 调用照相机拍照
查看>>
linux的C获取shell执行返回的结果
查看>>
关于spring mybateis 定义resultType="java.util.HashMap"
查看>>
程序员怎么留住健康?
查看>>
(转)C# 把我所积累的类库全部分享给博友(附件已经上传)
查看>>
Silverlight5 无法切换输入法,无法输入中文的原因及解决初探
查看>>
游戏开发基础:方向键的组合,八方向实现
查看>>
黑书-DP-方块消除 ****
查看>>
MySQL 分区
查看>>
我的架构经验系列文章 - 后端架构 - 语言层面
查看>>
DEFERRED_SEGMENT_CREATION
查看>>
读取手机硬件信息
查看>>
一致哈希
查看>>
The connection to adb is down, and a severe error has occured. 问题解决
查看>>
在Jenkins中配置运行远程shell命令
查看>>
代码杂记
查看>>
linux中防CC攻击两种实现方法(转)
查看>>
《Programming WPF》翻译 第9章 4.模板
查看>>
Windows7+VS2012下OpenGL 4的环境配置
查看>>
Linux Kernel中断子系统来龙去脉浅析【转】
查看>>