当前位置:网站首页>MongoDB的用户管理总结
MongoDB的用户管理总结
2022-07-07 11:17:00 【cui_yonghua】
基础篇(能解决工作中80%的问题):
进阶篇:
其它:
一. mongodb用户
1.1 用户管理接口
要添加用户,可使用MongoDB提供的db.createUser()方法。 添加用户时,可以为用户分配角色以授予权限。
注意:在数据库中创建的第一个用户应该是具有管理其他用户的权限的用户管理员。
还可以更新现有用户,例如更改密码并授予或撤销角色。
1.2 验证数据库
添加用户时,可以在特定数据库中创建用户。该数据库是用户的认证的数据库。
用户可以跨不同数据库拥有权限; 即用户的权限不限于认证数据库。 通过分配给其他数据库中的用户角色,在一个数据库中创建的用户可以拥有对其他数据库的操作权限。
用户名和认证数据库作为该用户的唯一标识符。 也就是说,如果两个用户具有相同的名称,但是在不同的数据库中创建,则它们是两个不同的用户。 如果您打算拥有具有多个数据库权限的单个用户,请在适用的数据库中创建具有角色的单个用户,而不是在不同数据库中多次创建用户。
1.3 认证用户
要验证用户,也可以在连接到 mongod 或 mongos 实例时使用命令行身份验证选项(例如:-u,-p,–authenticationDatabase)先连接到 mongod 或 mongos 实例,然后针对身份验证数据库运行 authenticate 命令或db.auth()方法。
要进行身份验证,客户端必须对用户的身份验证数据库进行身份验证。
例如,如果使用 mongo shell作为客户端,则可以使用–authenticationDatabase选项为用户指定身份验证数据库。
二、配置账号和密码
2.1 开启认证
MongoDB 默认安装完成以后,只允许本地连接,同时不需要使用任何账号密码就可以直接连接MongoDB,这样就容易被黑,让支付一些比特币,所以为了避免这些不必要的麻烦,所以我们需要给Mongo设置一个账号密码;
2.2 创建管理员用户
> use admin
switched to db admin
> db.createUser({
user:"admin",pwd:"password",roles:["root"]})
Successfully added user: {
"user" : "admin", "roles" : [ "root" ] }
2.3 认证登录
> db.auth("admin", "password")
2.4 MongoDB role 类型
数据库用户角色(Database User Roles)
read
:授予User只读数据的权限
readWrite
:授予User读写数据的权限
数据库管理角色(Database Administration Roles):
dbAdmin
:在当前dB中执行管理操作
dbOwner
:在当前DB中执行任意操作
userAdmin
:在当前DB中管理User
备份和还原角色(Backup and Restoration Roles):
backup
restore
跨库角色(All-Database Roles):
readAnyDatabase
:授予在所有数据库上读取数据的权限
readWriteAnyDatabase
:授予在所有数据库上读写数据的权限
userAdminAnyDatabase
:授予在所有数据库上管理User的权限
dbAdminAnyDatabase
:授予管理所有数据库的权限
集群管理角色(Cluster Administration Roles):
clusterAdmin
:授予管理集群的最高权限
clusterManager
:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
clusterMonitor
:授予监控集群的权限,对监控工具具有readonly的权限
hostManager
:管理Server
2.5 添加数据库用户
> use flowpp
switched to db flowpp
> db.createUser({
user: "flowpp", pwd: "flopww", roles: [{
role: "dbOwner", db: "flowpp" }]}) # 创建用户flowpp,设置密码flopww,设置角色dbOwner
2.6 查看系统用户
> use admin
switched to db admin
> db.system.users.find() # 显示当前系统用户
{
"_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000, "salt" : "9jXmylyRAK22TZmzv1Thig==", "storedKey" : "z76cVrBjX/CTFmn5RujtU+dz7Nw=", "serverKey" : "JQGonM84iDMI1nIXW7FdyOE55ig=" } }, "roles" : [ {
"role" : "root", "db" : "admin" } ] }
{
"_id" : "flowpp.flowpp", "user" : "flowpp", "db" : "flowpp", "credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000, "salt" : "KvocqWZA9E2tXBHpKpdAeQ==", "storedKey" : "50Kxc3LEgCSVN1z16S8g4A6jVp8=", "serverKey" : "0RSnsxd/7Yzmqro/YOHf/kfbHCk=" } }, "roles" : [ {
"role" : "dbOwner", "db" : "flowpp" } ] }
2.7 删除用户
# 删除用户的时候需要切换到用户管理的数据库才可以删除;
1.切换admin ,删除用户flowpp ,删除失败> use admin
switched to db admin
> db.dropUser("flowpp")
false2.切换flowpp ,删除用户flowpp,删除成功
> use flowpp
switched to db flowpp
> db.dropUser("flowpp")
true
边栏推荐
- Conversion from non partitioned table to partitioned table and precautions
- Cinnamon Applet 入门
- Leetcode brush questions: binary tree 19 (merge binary tree)
- Aosikang biological sprint scientific innovation board of Hillhouse Investment: annual revenue of 450million yuan, lost cooperation with kangxinuo
- Day-24 UDP, regular expression
- The difference between cache and buffer
- shell 批量文件名(不含扩展名)小写改大写
- [learn wechat from 0] [00] Course Overview
- 高瓴投的澳斯康生物冲刺科创板:年营收4.5亿 丢掉与康希诺合作
- 云检测2020:用于高分辨率遥感图像中云检测的自注意力生成对抗网络Self-Attentive Generative Adversarial Network for Cloud Detection
猜你喜欢
Leetcode skimming: binary tree 25 (the nearest common ancestor of binary search tree)
【学习笔记】zkw 线段树
centso7 openssl 报错Verify return code: 20 (unable to get local issuer certificate)
2022 polymerization process test question simulation test question bank and online simulation test
[untitled]
Creation and assignment of graphic objects
Analysis of DHCP dynamic host setting protocol
智云健康上市:市值150亿港元 SIG经纬与京新基金是股东
飞桨EasyDL实操范例:工业零件划痕自动识别
Leetcode brush question: binary tree 24 (the nearest common ancestor of binary tree)
随机推荐
What if the xshell evaluation period has expired
MySQL importing SQL files and common commands
《开源圆桌派》第十一期“冰与火之歌”——如何平衡开源与安全间的天然矛盾?
regular expression
Common text processing tools
HZOJ #236. Recursive implementation of combinatorial enumeration
飞桨EasyDL实操范例:工业零件划痕自动识别
达晨与小米投的凌云光上市:市值153亿 为机器植入眼睛和大脑
The URL modes supported by ThinkPHP include four common modes, pathinfo, rewrite and compatibility modes
Leetcode skimming: binary tree 22 (minimum absolute difference of binary search tree)
Blog recommendation | Apache pulsar cross regional replication scheme selection practice
Leetcode skimming: binary tree 27 (delete nodes in the binary search tree)
HZOJ #235. Recursive implementation of exponential enumeration
Unity 构建错误:当前上下文中不存在名称“EditorUtility”
DETR介绍
关于 appium 如何关闭 app (已解决)
[untitled]
DrawerLayout禁止侧滑显示
What are the benefits of ip2long?
《ASP.NET Core 6框架揭秘》样章[200页/5章]