当前位置:网站首页>MongoDB 基础了解(二)
MongoDB 基础了解(二)
2022-08-11 03:00:00 【Stars.Sky】
一、用户与权限管理
1.常用权限

2.创建管理用户
MongoDB有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。
管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userAdminAnyDatabase 角色即可。另外管理员账户必须在admin数据库下创建。
由于用户被创建在哪个数据库下,就只能在哪个数据库登录,所以把所有的用户都创建在admin数据库下。这样我们切换数据库时就不需要频繁的进行登录了。
先 use admin 切换至admin 数据库进行登录,登录后再use切换其他数据库进行操作即可。第二次的 use就不需要再次登录了。MongoDB设定use第二个数据库时如果登录用户权限比较高就可以直接操作第二个数据库,而不需要登录。
> show dbs
> use admin
> show users
> db.createUser({
... user:"uaad",
... pwd:"uaad",
... roles:[ {
... "role":"userAdminAnyDatabase",
... "db":"admin"
... }] }
... )
> show users
·user:用户名
·pwd:密码
·customData:存放用户相关的自定义数据,该属性也可忽略
·roles:数组类型,配置用户的权限开启身份验证并重启服务:
- 管理员账户创建完成以后,需要重新启动MongoDB,并开启身份验证功能。
- 便用认证函数 db.auth(“用户名”,”密码”)进行身份认证。返回结果1,则表示认证成功,返回0则表示认证失败。
- 登录成功以后即可进行该用户所拥有的角色对应的权限的其他操作,比如 show dbss再次查看所有数据库信息。
[[email protected] ~]# vim /usr/local/mongodb/bin/mongodb.conf
#开启身份验证功能
auth = true # authorization 的缩写
[[email protected] ~]# mongod -f /usr/local/mongodb/bin/mongodb.conf --shutdown
[[email protected] ~]# mongod -f /usr/local/mongodb/bin/mongodb.conf
[[email protected] ~]# mongo
> show dbs # 没有登录查看不到信息
> use admin # 只能到 admin 数据库下登录用户
switched to db admin
> db.auth("uaad","uaad")
1 # 返回1登录成功,返回0登录失败
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
3.创建普通用户
需求:创建一个test数据库,给这个数据库添加一个用户,用户名为testuser,密码为123456。并授予该用户对test数据库的读写操作权限。
1.管理员登录数据库
普通用户需要由管理员用户创建,所以先便用管理员用户登录数据库。
> use admin
switched to db admin
> db.auth("uaad","uaad")
12.创建数据库
MongoDB没有特定创建数据库的语法,在便用use切换数据库时,如果对应的数据库不存在则直接创建并切换。
> use test
switched to db test
3.创建用户
> db.createUser({user:"testuser",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
"user" : "testuser",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}4.更新用户
1.更新角色
如果我们需要对已存在的用户进行角色修改,可以使用 db.updateUser()函数来更新用户角色。注意:执行该函数需要当前用户具有 userAdmin 或 userAdminAnyDatabse 或 root 角色。
db.updateUser("用户名",{"roles":[{"role”:"角色名称",db:"数据库”},{"更新项2":"更新内容"}]})比如给刚才的 uaad 用户再添加 readWriteAnyDatabase 和 dbAdminAnyDatabase 权限。
> db.updateUser("uaad", {"roles":[{"role":"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"}]})
> show users
{
"_id" : "admin.uaad",
"userId" : UUID("b6532586-b403-4cb0-9a10-a0c84ee8ce9e"),
"user" : "uaad",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
},
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}2.更新密码
更新用户密码有以下两种方式,更新密码时需要切换到该用户所在的数据库。注意:需要使用具有 userAdmin或 userAdminAnyDatabse 或 root 角色的用户执行:
- 使用 db.updateUser ("用户名", {"pwd":"新密码"}) 函数更新密码
- 便用 db.changeUserPassword ("用户名", "新密码") 函数更新密码
5.删除用户
通过 db.dropUser()函数可以删除指定用户,删除成功以后会返回true。删除用户时需要切换到该用户所在的数据库。注意:需要使用具有 userAdmin 或 userAdminAnyDatabse 或 root 角色的用户才可以删除其他用户。
> use admin
switched to db admin
> db.auth("uaad","uaad")
1
> use test
switched to db test
> show users
{
"_id" : "test.testuser",
"userId" : UUID("ae6e219d-3c1c-41ba-a8d6-1ab6724dd480"),
"user" : "testuser",
"db" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
> db.dropUser("testuser")
true
> show users边栏推荐
猜你喜欢

多线程之ThreadPoolExecutor

CSDN 博客更换皮肤

OpenCV创始人:开源绝不能完全免费!

AI+医疗:使用神经网络进行医学影像识别分析

Detailed explanation of new features of ES advanced array function syntax

音视频开发,为什么要学习FFmpeg?应该怎么入手FFmpeg学习?

flink The object probably contains or references non serializable fields.

Logstash日志数据写入异常排查问题总结

关于地图GIS的一次实践整理(下) Redis的GIS实践

最倒霉与最幸运
随机推荐
"How to kick a bad habit to read notes?
否定语义转化层
聊聊对RPC的理解
入职数字ic设计后的一些工作心得
GBJ3510-ASEMI家电电源用整流桥GBJ3510
CSAPP Data Lab
google搜索技巧——程序员推荐
Salesforce disbands the Chinese team, which CRM product is more suitable for the Chinese
深度学习中的模型设计
Window function application of sum and count
2022茶艺师(中级)考试试题及模拟考试
OpenCV创始人:开源绝不能完全免费!
深度学习-第二次
The practice of alibaba data synchronization component canal
ESP32的环境配置(arduino arduino2.0 VScode platform哪个好用?)
[DB operation management/development solution] Shanghai Daoning provides you with an integrated development tool to improve the convenience of work - Orange
【Pdf自动生成书签】
关于地图GIS开发事项的一次实践整理(上)
2022年广东省安全员A证第三批(主要负责人)操作证考试题模拟考试平台操作
【Unity入门计划】Unity2D动画(1)-动画系统的组成及功能的使用