Bootstrap

开启docker中MongoDB的认证授权

开启docker中MongoDB的认证授权

思路

开启MongoDB服务后,默认是没有权限验证的。直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作。下面介绍一下如何开启docker中MongoDB的权限认证。

安装完MongoDB服务后默认有一个admin数据库,此时admin数据库是空的,没有记录任何权限相关的信息。当admin.system.users一个用户都没有时,即使MongoDB启动时添加了--auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否以--auth参数启动),直到在admin.system.users中添加一个用户。因此要开启MongoDB的权限认证需要满足两点条件:

  • admin.system.users中添加用户
  • MongoDB以--auth启动

实践

  • 进入相应的docker容器:

    docker exec -it 容器ID /bin/bash
    
  • 进入MongoDB交互式命令行并切换到admin数据库

    mongo
    
    use admin
    

    MongoDB自带一个数据库叫admin,可以在这个数据库中创建管理员账号。

    所有创建的用户都会存储在system.users集合中。

    db.getCollectionNames()
    // [ "system.users", "system.version" ]
    
  • 创建管理员

;