# 数据库服务搭建容器化
# mysql
sudo docker run -d \
--restart=always \
--name mysql \
-p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xxxxxx \
mysql:5.7
-v 文件挂载:将mysql的/var/lib/mysql
路径下的数据文件挂载至宿主机上的/data/mysql
路径下
-e 环境变量:设置mysql中的环境参数MYSQL_ROOT_PASSWORD
设置root账号的初始密码
# redis
# 准备redis.conf
# 密码
requirepass xxxxxx
# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,
maxmemory 1024m
# 绑定的主机地址,你可以绑定单一接口(127.0.0.1只允许本机连接),如果没有绑定(开放ip),所有接口都会监听到来的连接
# bind 127.0.0.1
# 主从复制,只需要从节点配置即可
# slaveof <masterip> <masterport>
# 启动redis
sudo docker run -d \
--restart=always \
--name redis \
-p 6379:6379 \
-v /data/redis/data:/data \
-v /data/redis/redis.conf:/usr/local/etc/redis/redis.conf \
redis:4.0.8
-v1 文件挂载:将redis的/data
路径下的数据文件挂载至宿主机上的/data/redis/data
路径下
-v2 文件挂载:将redis的/usr/local/etc/redis/redis.conf
路径下的redis配置文件挂载至宿主机上的/data/redis/redis.conf
路径下,当然也可以在宿主机上先配置好redis.conf然后再覆盖容器里的redis.conf
# mongo
# 启动mongodb
sudo docker run -d \
--restart=always \
--name mongodb \
-p 27017:27017 \
-v /data/mongodb:/data/db \
mongo
-v 文件挂载:将redis的/data/db
路径下的数据文件挂载至宿主机上的/data/mongodb
路径下
# 配置mongodb
# 进入docker容器的mongo
sudo docker exec -it mongodb mongo
# 配置用户
> show dbs # 显示所有数据库
> use admin # 进入admin数据库
> db.createUser(
{
user: "admin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
) # 创建一个用户,身份是超级管理员
完成后会提示Successfully added user相关信息
> db.auth("admin","abc123")
1
若返回为1,则认证成功!现在,我们超级管理员也创建好了,可以为其他数据库创建用户了
# MongoDB基本的角色
1.数据库用户角色:read、readWrite; 2.数据库管理角色:dbAdmin、dbOwner、userAdmin; 3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4.备份恢复角色:backup、restore; 5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6.超级用户角色:root还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限