1.获取mongo镜像

docker pull mongo

使用docker安装使用 mongo_5e

2.启动mongo

docker run --name mongo -p 27017:27017 -v /data/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -d mongo

参数说明:

-d     后台启动
--name 自定义名称
-p     映射端口
-v     挂载数据目录和配置目录
-e 环境变量

注:

  运行时加上 环境变量MONGO_INITDB_ROOT_USERNAME 和MONGO_INITDB_ROOT_PASSWORD 会自动启动授权

使用docker安装使用 mongo_bash_02

查看状态

使用docker安装使用 mongo_mongodb_03

 3.连接

登录到mongo的容器里

docker exec -it mongo bash

使用交互的形式, 在名字为 `mongodb` 的容器中实行 `bash`这个命令

连接mongo

 mongo -u admin -p admin

使用docker安装使用 mongo_mongodb_04

4.使用

(1)在容器中连接

  新建数据库abc,添加用户baby,密码123456,授权readWrite,在abc上添加一条数据

> use abc;
switched to db abc
>  db.createUser({user:"baby",pwd:"123456",roles:["readWrite"]})
Successfully added user: { "user" : "baby", "roles" : [ "readWrite" ] }
> show users
{
        "_id" : "abc.baby",
        "userId" : UUID("bde1abcc-e351-4e16-95c7-786e2f9a7f60"),
        "user" : "baby",
        "db" : "abc",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "abc"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
> db.abc.insert({"name":"joe","age":"20"})
WriteResult({ "nInserted" : 1 })
> show databases
abc     0.000GB
admin   0.000GB
config  0.000GB
local   0.000GB
> db.abc.find({"name":"joe"})
{ "_id" : ObjectId("5e8d5ea9b116039555a29399"), "name" : "joe", "age" : "20" }

(2)在windows上连接

mongo  宿主机ip/数据库  -u用户名 -p密码

连接并查询数据

D:\mongodb\bin>mongo 192.168.99.100/abc -u baby -p 123456
MongoDB shell version v4.2.0
connecting to: mongodb://192.168.99.100:27017/abc?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("c1b84b1a-b94c-48d1-ac87-0c061d63a62e") }
MongoDB server version: 4.2.5
> show databases
abc  0.000GB
> db.abc.find({"name":"joe"})
{ "_id" : ObjectId("5e8d5ea9b116039555a29399"), "name" : "joe", "age" : "20" }