小 忆 博 客
有梦想,有精彩

mongoDB安全权限访问控制

目录

  1. 首先使用以下命令启动mongoDB
  2. 连接并切换到需要设置登录的数据
  3. 创建登录账户
  4. 停止mongoDB服务
  5. 最后安全的启动mongoDB

如果你使用过mongoDB,就会知道默认情况下,任何人都可以连接,这样使得线上的数据很不安全,那么mongoDB可以像MySQL那样设置账号密码登录吗?

答案是肯定的,mongoDB当然可以设置,下面分享一下如何设置mongoDB的账号和密码吧!

首先使用以下命令启动mongoDB

在配置文件没有修改的情况下(配置文件:/etc/mongod.conf),使用:

1
service mongod start

注意:/path/db是我的数据库存放路径

启动mongoDB后就可以直接连接到mongoDB数据库,并且不需要任何密码验证,并且拥有mongoDB的所有权限,这样我们就可以建立数据库登录账号啦!

连接并切换到需要设置登录的数据

命令:

1
2
3
4
#连接到mongoDB
mongo IP地址:端口
#切换到需要设置登录的数据库
use 数据库名

为什么连接数据库后,直接切换到需要设置登录的数据库。在mongoDB安全机制中,你需要对那个数据库设置账户密码登录,必须要切换到那个数据库去创建登录账户。

创建登录账户

注意:在为其他数据库设置账号密码之前,请先切换到admin数据库设置一个超级管理员,权限:root。如果不设置超级管理员,一旦开起了安全权限运行,这时无权限操作其他数据库!

命令:

1
2
3
4
5
6
7
8
#这条命令在实际使用中可以写一行
db.createUser({ user: "用户名",
pwd: "密码",
roles: [
{ role: "权限", db: "数据库" },
...
]
})

权限分为:

  1. read:允许用户读取指定数据库

  2. readWrite:允许用户读写指定数据库

  3. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

  4. dbOwner: 拥有read、readWrite、dbAdmin的所有权限

  5. userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

  6. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

  7. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

  8. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

  9. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

  10. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

  11. root:只在admin数据库中可用。超级账号,超级权限

如果看到”Successful”字样就证明你设置成功了…

即是设置成功了,我们使用:

1
db.auth("用户名","密码")

来验证一下吧!运行成功后返回输出1则证明设置成功!

停止mongoDB服务

1
service mongod stop

最后安全的启动mongoDB

  1. 修改配置文件

    配置文件:/etc/mongod.conf

    1
    2
    3
    #在配置文件的第32行修改
    security:
    authorization: 'enabled'
  2. 启动mongoDB

    命令:

    1
    service mongod start