MongoDB设置权限

  1. 输入命令行mongo,进入mongodb环境

    mongo
    
  2. 切换到admin 数据库

    use admin
    
  3. 给admin设置用户密码

    • user:用户名
    • pwd:密码
    • roles:
    db.createUser({user: 'root', pwd: 'admin_mima', roles: ['root']})
    
  4. 验证是否成功,db.auth(用户名,密码)

    db.auth('root','admin_mima')
    

    如果返回1标拾验证成功,如果是0 则表示验证失败

  5. 以上步骤是给root设置密码,如果要给特定的库设置权限,打比方test_demo库,切换到数据库test_demo

    use test_demo
    
  6. 为test_demo添加用户,并且赋予权限

    db.createUser({ user: 'herry', pwd: 'herry_mima', roles: [{ role: 'readWrite', db: 'test_demo' }] })
    

    这行代码意思是 创建一个herryl用户 给予读写权限 db表示该用户操作的数据库名。

    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

  7. 一切搞定,重新开机mongodb,通过增加 --auth 开启安全登录

    mongod --dbpath /www/server/mongodb/data --auth
    
  8. 给数据库添加用户访问权限或者修改密码

     db.addUser('user','pwd')
     db.auth('user','pwd')
      //修改用户密码 一定要经过admin验证才可以执行
     db.changeUserPassword('user','pwd'); 
    
  9. 或者通过宝塔面板mongodb配置页面来修改。

    • bindIp修改为 0.0.0.0 允许外网访问
    • authorization 修改为 enabled 开启认证
      重启一下mongodb

    重启mongdb可以用命令行(/etc/init.d/mongodb restart)

    /etc/init.d/mongodb restart
    
  10. 完成