[MongoDB]学习笔记--User管理

本文详细介绍了如何在MongoDB中创建超级用户和普通用户,并对其权限进行管理。包括创建超级用户、使用新创建的用户登录、查看当前用户的权限、创建一般用户、创建不受访问限制的超级用户、修改密码、查看用户信息和修改密码及用户信息等步骤。重点突出MongoDB用户权限管理的基本操作。

1. 创建一个超级用户

use admin
db.createUser(
    {
        user: "adminUserName",
        pwd: "userPassword",
        roles:
        [
            {
                roles: "userAdminAnyDatabase",
                db: "admin"
            }
        ]
    }
)

超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问)。

db是指定数据库的名字,admin是管理数据库。

2. 用新创建的用户登录

mongo --host xxx -u adminUserName -p userPassword --authenticationDatabase admin

3. 查看当前用户的权限

db.runCommand(
    {
        usersInfo:"userName",
        showPrivileges:true
    }
)

4. 创建一般用户,也是用createUser

use db01
db.createUser( {
user:"oneUser", pwd:"12345", roles:[ {role:"read",db:"db01"}, {role:"read",db:"db02"}, {role:"read",db:"db03"} ] } )

5. 创建一个不受访问限制的超级用户

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

6. 修改密码

use admin
db.changeUserPassword("username", "xxx")

7. 查看用户信息

db.runCommand({usersInfo:"userName"})

8. 修改密码和用户信息

db.runCommand(
    {
        updateUser:"username",
        pwd:"xxx",
        customData:{title:"xxx"}
    }
)

注:

1. 和用户管理相关的操作基本都要在admin数据库下运行,要先use admin;

2. 如果在某个单一的数据库下,那只能对当前数据库的权限进行操作;

3. db.addUser是老版本的操作,现在版本也还能继续使用,创建出来的user是带有root role的超级管理员。

转载于:https://www.cnblogs.com/lemonbar/p/3915248.html

### MongoDB 安全与访问控制的学习笔记 以下是针对 MongoDB 的安全性及访问控制相关内容的详细介绍,涵盖了用户认证、角色授权、网络隔离等多个方面。 --- #### 1. 用户认证机制 ##### (1) 默认行为 MongoDB 默认情况下是以无需身份验证的方式运行(即 `--noauth` 参数),这意味着任何客户端都能无限制地连接到数据库并执行操作[^4]。然而,在实际生产环境中强烈建议禁用这一选项以增强系统的整体防护能力。 ##### (2) 启用认证功能 要激活基于账号密码的身份校验过程,则需要显式指定相关参数给服务进程: ```bash mongod --auth ... ``` 一旦启用了此项特性之后,所有试图建立新链接的行为都将被强制要求先完成合法性的审核步骤才能继续下一步的动作。 ##### (3) 创建管理员账户 对于刚安装好的实例而言,默认是没有预设超级用户的。因此我们需要手动添加至少一个具有完全控制权的角色成员。 ```javascript use admin; db.createUser({ user:"siteUserAdmin", pwd:"password", roles:[{role:"userAdminAnyDatabase", db:"admin"}] }); ``` #### 2. 权限管理模型 ##### (1) 内置角色定义 MongoDB 提供了一套丰富的内置角色集合用来简化日常运维管理工作流中的细粒度划分需求: - 数据库级别的读写权限(`read`, `readWrite`) - 跨越多个数据库的操作许可(`dbAdmin`, `clusterMonitor`) - 特殊用途的功能开关比如备份还原任务(`backup`, `restore`)等. ##### (2) 自定义角色开发 当现有的标准无法满足特定项目的要求时,还可以自定义新的角色类型来填补空白区域. ```javascript use reporting; db.createRole({ role: "reportCreator", privileges:[ {resource:{anyResource:true}, actions:["find"]}, {resource:{db:"config"},actions:["getDiagnosticData"]} ], inherits:[], }) ``` #### 3. 加密通信保护 为了防止敏感信息在网络传输过程中遭到窃听泄露的风险,可以考虑启用 TLS/SSL 协议加密整个通讯链路[^4]。这通常涉及到以下几个关键环节: - 获取有效的证书文件; - 修改配置文件加入必要的ssl参数说明; - 测试端口监听状态确认变更生效与否。 #### 4. IP白名单设定 最后一点也是非常重要的一环就是合理规划允许接入的服务地址范围列表,从而最大限度缩小暴露面降低潜在威胁等级[^4]。可以通过绑定具体的IP或者网段实现这一点。 ```yaml net: bindIp: 127.0.0.1,192.168.x.y ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值