首先下载镜像文件
sudo docker pull mongo
无密码验证创建容器
docker run -itd --name mongo -p 27017:27017 mongo
这时创建的MongoDB是没有用户名与密码的,比如使用python连接mongodb时只需要:
pymongo.MongoClient(host='localhost', port=27017)
需要密码验证创建容器
整个流程是:
创建需要验证的容器
进入容器内部,进入数据库命令行
创建root用户与密码
登录root用户
通过root用户的权限创建其他用户\n步骤1:创建需要验证的容器
修改创建容器的方法为:
sudo docker run -itd --name docker-mongo -p 27017:27017 mongo --auth
步骤2:进入容器内部,进入数据库命令行
只需要使用--auth即可创建需要验证的容器,然后需要进入容器内部,创建更多用户:
sudo docker exec -it docker-mongo /bin/bash
进入容器后,运行:
mongosh
这样就进入了mongodb的命令界面。
步骤3:创建root用户与密码
创建超级用户:
use admin
db.createUser({ user: \"root\" , pwd: \"root_pass\", roles: [\"root\"]})
这样就创建了root用户与密码:
用户名:root
密码:root_pass
权限:root
步骤4:登录root用户\ndb.auth(\"root\",\"root_pass\")
返回 { ok: 1 },证明root用户创建成功
步骤5:通过root用户的权限创建其他用户
创建对所有数据库有读写权限的用户:
db.createUser({ user: \"dbrw\" , pwd: \"dbrw_pass\", roles: [\"readWriteAnyDatabase\"]})
这样就创建了一个新用户:
用户名:dbrw
密码:dbrw_pass
权限:readWriteAnyDatabase\n同样可以创建自定义的权限:
db.createUser({
user:\"ccc_user\",
pwd:\"ccc_123456\",
roles:[
{role:\"readWrite\",db:\"new_db_1\"},
{role:\"readWrite\",db:\"new_db_2\"},
'readAnyDatabase'
通过这种方式创建的用户,可以得到:
用户名:ccc_user
密码:ccc_123456
权限:
读写权限:数据库new_db_1
读写权限:数据库new_db_2
只读权限:除new_db_1、new_db_2外的其他数据库
权限&名称请参考
数据库用户角色
read: 只读数据权限
readWrite:学些数据权限
数据库管理角色
dbAdmin: 在当前db中执行管理操作的权限
dbOwner: 在当前db中执行任意操作userADmin: 在当前db中管理user的权限
备份和还原角色
backup
restore
跨库角色
readAnyDatabase: 在所有数据库上都有读取数据的权限
readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
userAdminAnyDatabase: 在所有数据库上都有管理user的权限
dbAdminAnyDatabase: 管理所有数据库的权限
集群管理
clusterAdmin: 管理机器的最高权限
clusterManager: 管理和监控集群的权限
clusterMonitor: 监控集群的权限
hostManager: 管理Server
超级权限
root: 超级用户