温馨提示×

MongoDB Ubuntu版如何设置用户权限

小樊
42
2025-11-11 04:54:04
栏目: 云计算

MongoDB Ubuntu版用户权限设置指南

一、前置准备

  1. 安装MongoDB:若未安装,可通过以下命令完成安装:
    sudo apt update && sudo apt install -y mongodb-org
    
  2. 启动MongoDB服务:安装完成后启动服务并设置开机自启:
    sudo systemctl start mongod && sudo systemctl enable mongod
    

二、启用访问控制(必选)

MongoDB默认无认证,需通过配置mongod.conf启用授权:

  1. 编辑配置文件:
    sudo nano /etc/mongod.conf
    
  2. security section添加以下内容(若无security section则新建):
    security:
      authorization: enabled
    
  3. 保存文件并重启服务:
    sudo systemctl restart mongod
    

三、创建管理员用户(用于用户管理)

管理员用户需具备userAdminAnyDatabase(管理所有数据库用户)和readWriteAnyDatabase(读写所有数据库)权限,建议创建在admin数据库:

  1. 连接到MongoDB Shell:
    mongo
    
  2. 切换至admin数据库:
    use admin
    
  3. 创建管理员用户(以adminUser为例):
    db.createUser({
      user: "adminUser",
      pwd: "StrongPassword123!", // 使用强密码
      roles: ["userAdminAnyDatabase", "readWriteAnyDatabase"]
    })
    
  4. 退出Shell:
    exit
    

四、创建普通用户并分配权限

根据需求为用户分配不同角色,常见场景如下:

1. 单数据库读写权限(推荐)

若用户仅需访问特定数据库(如myDatabase),可分配readWrite角色:

  1. 连接到MongoDB Shell:
    mongo
    
  2. 切换至目标数据库:
    use myDatabase
    
  3. 创建用户(以myUser为例)并分配权限:
    db.createUser({
      user: "myUser",
      pwd: "UserPassword456!",
      roles: ["readWrite"] // 读写权限
    })
    
  4. 退出Shell:
    exit
    

2. 数据库所有者权限(完全控制)

若用户需管理数据库结构(如创建集合、索引),可分配dbOwner角色:

use myDatabase
db.createUser({
  user: "dbOwnerUser",
  pwd: "OwnerPassword789!",
  roles: ["dbOwner"] // 数据库所有者权限
})
exit

3. 只读权限(仅查询)

若用户仅需查询数据,可分配read角色:

use myDatabase
db.createUser({
  user: "readOnlyUser",
  pwd: "ReadOnlyPass123!",
  roles: ["read"] // 只读权限
})
exit

五、使用用户连接数据库

创建用户后,需通过认证连接:

# 连接至特定数据库(如myDatabase)
mongo -u myUser -p UserPassword456 --authenticationDatabase myDatabase

# 连接至管理员账户(用于管理用户)
mongo -u adminUser -p StrongPassword123 --authenticationDatabase admin

六、验证权限

  1. 使用创建的用户连接后,尝试执行操作:
    • 读写权限用户:可执行insertupdatefind等操作。
    • 只读权限用户:执行insert会报错not authorized
  2. 通过db.getUser("username")查看用户角色:
    use myDatabase
    db.getUser("myUser")
    

注意事项

  • 强密码策略:避免使用简单密码,建议包含大小写字母、数字和特殊字符。
  • 最小权限原则:仅分配用户所需的最小权限,降低安全风险。
  • 定期审计:通过db.getUsers()查看所有用户及角色,及时清理闲置账户。
  • 网络访问控制:结合mongod.conf中的bindIp(限制监听IP)和系统防火墙(如ufw),限制MongoDB端口(默认27017)的访问范围。

0