1、首先你需要有docker的安装呀
2、安装好了上面的步骤,那就开始写命令吧!
2.1、拉取最新MongoDB镜像
docker pull mongo:latest
2.2. 查看镜像
docker images
2.3.运行mongo容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
提示:
- docker run :创建一个新的容器并运行一个命令
- i: 以交互模式运行容器,通常与 -t 同时使用;
- t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- d: 后台运行容器,并返回容器ID;
– name=“nginx-lb”: 为容器指定一个名称; - p: 指定端口映射,格式为:主机(宿主)端口:容器端口
– auth: 开启mongo容器密码认证
2.4. 进入mongo容器
docker exec -it mongo mongo admin
提示:
- docker exec :在运行的容器中执行命令
- i :即使没有附加也保持STDIN 打开
- t :分配一个伪终端
2.5. 创建管理员账号和密码
这里账号和密码都设为了admin
db.createUser({ user:'admin',pwd:'admin',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
- mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。
2.6. 用创建的账号登陆
db.auth('admin', 'admin')
2.7.管理员账户登录后,可以用该账户创建其他数据库管理员账号
use yourdatabase
db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
role内建角色有如下:
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
3. 如果想用可视化操作数据库,你们可以用以下两种
3.1. 第一种Navicat
3.2. 第二种:MongoDB的GUI管理工具:Robo 3T
下载:https://robomongo.org/download
4. MongoDB的备份和恢复
- 备份方式: docker cp mongodump
- 恢复方式: docker cp mongorestore
在这里需要说明一下,需要用可视化数据,一定一定要搞清楚,怎么登录的,从哪一个登录的??不要入坑!!!!
## 这步开始刚刚安装好mongodb,没有进行什么操作
use admin
#创建管理员账户(不能创建数据库)
db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
# 创建超级管理员(可以创建数据库)
db.createUser({user:"root",pwd:"123456",roles:[{role: 'root', db: 'admin'}]})
# 退出
exit
# 登录admin 数据库
mongo admin
# root管理员登录
db.auth('root','123456');
# 创建test数据库
use test;
# 查看是否有test数据库,结果是没有的
show dbs
# 需要往里面添加数据,test才会生成
db.createCollection("list")
# 查看是否有test数据库,结果是有的
show dbs
#退出
exit
# 重新mongo服务
# 进行mongo 初始化认证,这步是Authentication failed 和connect failed问题解决步骤(这步开始是已经创建好root账号和创建test数据库)
mongod --auth --dbpath=/data/db --logpath=/data/log
# 登录admin 数据库
mongo admin -u root -p 123456
# 进入 test
use test;
# 创建test数据库的管理员
db.createUser({user: "user1", pwd: "123456", roles:["dbOwner"]})
# 退出
exit
# 可以登录,问题解决
mongo test -u user1 -p 123456