突发奇想,想要在家里的笔记本上安装个MongoDB,平时偶尔能用一下来进行测试,既然笔记本上有Docker环境,当然要利用起来了
1 | docker run --name mongodb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -d mongo --auth --authenticationDatabase heheda |
- 使用认证方式登录MongoDB –auth .
- 管理员用户名 MONGO_INITDB_ROOT_USERNAME 设置
- 管理员用户名密码 MONGO_INITDB_ROOT_PASSWORD 设置
现在你有了一个管理员账户,但是对于不同的数据库,要使用不同的用户,怎么控制呢?
Let’s get it ,我现在需要一个demo数据库,并且需要一个用户对demo数据库有完全管理权限.用户名和密码就都是demo吧
1 | > mongo 192.168.123.123:27017/admin -u admin -p admin |
登录到Docker上的mongo server ,我使用本地装好的mongo client ,use demo选择一个数据库,这样也就是创建了一个数据库,createUser在demo数据库下,创建了一个demo用户,用户名密码都是demo.{"role":"dbAdmin","db":"demo"} dbAdmin: 数据库管理员,具体有什么权限参照下面
- read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限