1、首先你需要有docker的安装呀

python docker 本地上传服务器 python连接docker_docker

python docker 本地上传服务器 python连接docker_python_02

2、安装好了上面的步骤,那就开始写命令吧!

2.1、拉取最新MongoDB镜像

docker pull mongo:latest

python docker 本地上传服务器 python连接docker_big data_03

2.2. 查看镜像

docker images

python docker 本地上传服务器 python连接docker_创建数据库_04

2.3.运行mongo容器

docker run -itd --name mongo -p 27017:27017 mongo --auth

python docker 本地上传服务器 python连接docker_docker_05

提示:

  • 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'}]});

python docker 本地上传服务器 python连接docker_创建数据库_06

  • mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。

2.6. 用创建的账号登陆

db.auth('admin', 'admin')

python docker 本地上传服务器 python连接docker_big data_07

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

python docker 本地上传服务器 python连接docker_数据库_08

python docker 本地上传服务器 python连接docker_docker_09


python docker 本地上传服务器 python连接docker_docker_10

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