为MongoDB中的每个数据库创建独立的用户账号

一、启用身份验证(如果尚未启用)

  1. 修改MongoDB配置文件
    编辑 mongod.cfg(默认路径:C:\Program Files\MongoDB\Server\<版本>\bin\mongod.cfg),添加以下配置:
    security:
      authorization: enabled
    
  2. 重启MongoDB服务
    net stop MongoDB
    net start MongoDB
    

二、创建管理员账号(最高权限)

  1. 无认证模式下连接MongoDB

    # 进入MongoDB安装目录的bin文件夹
    cd "C:\Program Files\MongoDB\Server\<版本>\bin"
    mongo --port 27017
    
  2. 切换到admin数据库并创建管理员

    use admin
    db.createUser({
      user: "admin",
      pwd: "your_admin_password",  // 替换为实际密码
      roles: [ { role: "root", db: "admin" } ]  // 赋予root权限
    })
    
  3. 退出MongoDB Shell

    exit
    

三、创建普通数据库和用户

  1. 以管理员身份登录

    mongo -u "admin" -p "your_admin_password" --authenticationDatabase "admin"
    
  2. 创建新数据库(或切换到已有数据库)

    use mydb  // 数据库不存在时,首次插入数据会自动创建
    
  3. 为该数据库创建用户

    db.createUser({
      user: "mydb_user",
      pwd: "user_password",  // 替换为实际密码
      roles: [ { role: "readWrite", db: "mydb" } ]  // 赋予读写权限
    })
    

    常用角色说明

    • read:只读权限
    • readWrite:读写权限
    • dbAdmin:数据库管理权限(如索引、统计)
    • dbOwner:数据库所有者(包含读写和管理权限)
    • userAdmin:用户管理权限

四、验证用户权限

  1. 使用新用户登录测试

    mongo -u "mydb_user" -p "user_password" --authenticationDatabase "mydb"
    
  2. 执行权限操作

    use mydb
    db.test.insertOne({ name: "demo" })  // 写入数据(验证写权限)
    db.test.find()                       // 读取数据(验证读权限)
    

五、管理用户命令

命令说明
db.updateUser("用户名", { ... })修改用户密码或权限
db.dropUser("用户名")删除用户
db.getUsers()查看当前数据库所有用户

六、常见问题

  1. 身份验证失败

    • 确保配置文件中的 authorization: enabled 已生效。
    • 检查用户名、密码和认证数据库(--authenticationDatabase)是否匹配。
  2. 权限不足

    • 使用管理员账号为用户分配更高权限角色(如 dbOwner)。
  3. 数据库未自动创建

    • 执行 db.collection.insertOne({}) 插入一条空数据触发创建。

七、示例完整流程

# 1. 以管理员身份登录
mongo -u admin -p admin_password --authenticationDatabase admin

# 2. 创建新数据库和用户
use myapp
db.createUser({
  user: "dev",
  pwd: "dev123",
  roles: [ { role: "readWrite", db: "myapp" }, { role: "read", db: "reports" } ]
})

# 3. 验证用户权限
mongo -u dev -p dev123 --authenticationDatabase myapp
use myapp
db.stats()  // 检查权限

通过以上步骤,您可以为MongoDB中的每个数据库创建独立的用户账号,并精确控制其访问权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值