Docker安装MongoDB、Redis和MySQL

目录

1.安装MongoDB

1.1 获取MongoDB

1.2 启动容器

1.3 挂载数据卷

1.4 认证登录:设置用户和密码

2.安装Redis

2.1 获取Redis

2.2 启动Redis容器,并挂载数据卷


1.安装MongoDB

1.1 获取MongoDB

docker pull mongo

1.2 启动容器

docker run --name lqs-mongodb -p 27017:27017 mongo

1.3 挂载数据卷

        上面步骤2启动的MongoDB容器后,数据默认存储在Docker容器里面,一旦删除该容器,数据就会丢失,如果需要数据不丢失,解决办法就是将Docker中MongoDB存储数据的路径映射到宿主机。这样,只要宿主机不删除数据,Docker中的MongoDB就有数据。

  • Linux系统

        例如:将容器中/data/db目录(MongoDB镜像默认存储数据在此目录下),映射到宿主机的/home/lqs/data/mongodb目录,这样容器中MongoDB产生的所有数据都会保持到宿主机上:

docker run --name mongo -p 27017:27017 -v /home/lqs/database/mongodb/data:/data/db -d mongo

  • Windows系统

docker run --name mongo -p 27017:27017 -vE:\MongoDB\data:/data/db -d mongo

        -d表示后台运行,命令运行后,打开宿主机的/home/lqs/data/mongodb目录,可以看到已经有数据存储了,如下所示:

  •  Windows系统

docker run -d --restart=always -p 27017:27017 --name mongo -v D:/MongoDB/data:/data/db -d mongo

1.4 认证登录:设置用户和密码

  1.  方式一:不推荐

        MongoDB默认没有设置用户名和密码,使用IP+端口就能直接访问数据库。       

        这里以在Ubuntu的Docker设置MongoDB用户为例:

  • ①首先创建一个不需要认证校验的MongoDB容器

docker run --name mongo -p 27017:27017 -v /home/lqs/database/mongodb/data:/data/db -v /Users/qsliu/database/docker-log/mongo:/data/log -d mongo:latest

  • ②进入MongoDB,创建管理员账户,授予root权限

# Docker里面的MongoDB容器已运行,且容器名称为mongo

# 还可以使用docker exec -it 容器名称 mongo admin,来直接进入MongoDB数据库中

> docker exec -it mongo bash

# 使用mongo命令,进入MongoDB数据库

> mongo

# 切换到MongoDB自带的数据库admin,用于创建管理员账户

> use admin

# 创建管理员账户,授予root权限

> db.createUser({user:'admin',pwd:'123456',roles:[{role:'root',db:'admin'}]});

  • ③删除正在运行的MongoDB容器

docker rm -f mongo

  • ④重新创建一个开启权限认证的MongoDB容器

docker run --name mongo -p 27017:27017 -v /Users/qsliu/database/docker-data/mongo:/data/db -v /Users/qsliu/database/docker-log/mongo:/data/log -d mongo:latest --auth

  • ⑤进入MongoDB容器,使用管理员账户admin进行认证后,再进行其他操作
# 验证:尝试使用上面创建的管理员账户进行验证连接,返回1就表示认证成功。 
> db.auth('admin', '123456')
# 切换到数据库sms-send(如果没有该数据库,则会创建该数据库),用于给该数据库创建普通用户。
> use sms-send
# 创建一个名为 lqs,密码为 123456 的普通用户,授予读写权限。
> db.createUser({ user:'lqs',pwd:'123456',roles:[ { role:'readWrite', db: 'sms-send'}]});
# 修改密码
db.changeUserPassword('lqs','123');
# 查看当前数据库里面的所有用户
> show users
# 查看所有用户(pretty()格式化显示,只能在admin数据库下执行)
> db.system.users.find().pretty()
# 删除用户
> db.dropUser("lqs")
# 退出
> exit

2.方式二:推荐

        直接输入以下命令创建MongoDB容器:

docker run --name mongo -p 27017:27017 -v /Users/qsliu/database/docker-data/mongo:/data/db -v /Users/qsliu/database/docker-log/mongo:/data/log -d mongo:latest --auth       

        然后输入以下命令:

#进入MongoDB容器

docker exec -it mongo /bin/bash 

#进入mongo shell

mongosh

#进入admin数据库

use admin

# 创建超级权限root角色的用户,或者userAdminAnyDatabase 等角色权限比较大的用户,我创建的是拥有超级权限root角色的用户root
# 用户名:root,密码:root,角色:root,数据库:admin
db.createUser({user:'root',pwd:'root',roles:[{role:'root',db:'admin'}]})
# 认证登录db.auth('用户名','密码'),打印1则代表认证通过

db.auth('root','root')

# 退出重新登陆

#接下来给数据库test_a_collection创建用户zhangsan
use test_a_collection      # 切换至数据库test_a_collection

# 创建用户zhangsan,角色为dbOwner,即代表zhangsan拥有对test_a_collection数据库的所有权限
db.createUser({user:"zhangsan", pwd:"123456", roles:[{role: "dbOwner", db:"test_a_collection" }]})

# zhangsan用户登录
db.auth('zhangsan','123456')

# 查看当前数据库的集合,因为是新的数据库,所以集合为空,不打印任何东西则代表成功
show collections

使用MongoDB Compass连接MongoDB

  • 使用admin账户进行连接,可以看到admin账户是超级管理员,可以操作所有数据库

 

  • 使用lqs账户进行连接,只能操作sms-send数据库

 

2.安装Redis

2.1 获取Redis

docker pull redis

2.2 启动Redis容器,并挂载数据卷

docker run --name redis -p 6379:6379 -v /Users/qsliu/database/docker-data-config/redis-7.0.8/redis.conf:/etc/redis/redis.conf -v /Users/qsliu/database/docker-data/redis:/data  -d redis:latest

3.安装MySQL

#获取MySQL

docker pull mysql

#创建并运行MySQL容器

docker run --restart=always --privileged=true \
-v /Users/qsliu/database/docker-data/mysql/:/var/lib/mysql \
-v /Users/qsliu/database/docker-log/mysql/:/var/log/mysql \
-v /Users/qsliu/database/docker-data-config/mysql/mysq.cnf:/etc/mysql/my.cnf \
-p 3306:3306 --name my-mysql \
-e MYSQL_ROOT_PASSWORD=mstsc123. -d mysql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值