开启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" ]
-
创建管理员