命令
docker run -itd --name mongo --restart=on-failure:10 -p 27017:27017 -v /home/db mongo --auth
–restart=on-failure:10:为mongo添加重启策略,在非零状态下退出,重试次数设置为10次
-p 27017:27017:映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
–auth:需要密码才能访问容器服务。
-v:映射文件到本地文件夹,这样数据库文件就会在本地存储,即使删除了容器或镜像至少数据库文件还在,数据不会丢失。
-d:表示守护态运行
$ docker exec -it mongo mongo admin
#创建一个名为 admin,密码为 123456 的用户。
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
#尝试使用上面创建的用户信息进行连接。
db.auth('admin', '123456')
#创建超级用户
db.createUser({ user: "root" , pwd: "root", roles: ["root"]})
基于角色的权限说明
内置角色
数据库用户角色
read: 只读数据权限
readWrite:学些数据权限
数据库管理角色
dbAdmin: 在当前db中执行管理操作的权限
dbOwner: 在当前db中执行任意操作
userADmin: 在当前db中管理user的权限
备份和还原角色
backup
restore
跨库角色
readAnyDatabase: 在所有数据库上都有读取数据的权限
readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
userAdminAnyDatabase: 在所有数据库上都有管理user的权限
dbAdminAnyDatabase: 管理所有数据库的权限
集群管理
clusterAdmin: 管理机器的最高权限
clusterManager: 管理和监控集群的权限
clusterMonitor: 监控集群的权限
hostManager: 管理Server
超级权限
root: 超级用户