安装docker
[root@localhost ~]# yum update
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]# yum install docker-ce
[root@localhost ~]# docker version
安装docker-compose 编排容器,可以控制多个容器
root@localhost ~]# yum -y install epel-release
root@localhost ~]# yum -y install python-pip
root@localhost ~]# yum install docker-compose
root@localhost ~]# docker-compose version
ubuntu
sudo apt-get update
sudo apt-get install docker
sudo apt-get install docker.io
sudo apt-get install docker-registry
sudo api-get install docker-compose
sudo systemctl start docker
docker 安装MySQL
后面跟的是版本号
docker pull mysql:5.7
mysql的配置文件默认在 /etc/my.cnf
运行容器
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
数据库时间不一致 需添加
-v /etc/localtime:/etc/localtime
参数说明:
- run run 是运行一个容器
- -d 表示后台运行
- -p 表示容器内部端口和服务器端口映射关联
- –privileged=true 设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
- -v /docker/mysql/conf/my.cnf:/etc/my.cnf 将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
- -v /docker/mysql/data:/var/lib/mysql 同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
- -e MYSQL_ROOT_PASSWORD=123456 设置MySQL数据库root用户的密码
- –name mysql 设值容器名称为mysql
- mysql:5.7 表示从docker镜像mysql:5.7中启动一个容器
- –character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码
新建MySQL用户
先进入容器
docker exec -it mysql bash
执行MySQL命令, 输入root密码, 连接MySQL
mysql -uroot -p
输入密码后, 执行下面命令创建新用户 (用户名: test , 密码: test123)
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;
show now() 发现数据库时间和服务器时间不一致
mysql 容器名 或者id 都行
docker cp /usr/share/zoneinfo/Asia/Shanghai mysql:/etc/localtime
重启
docker restart mysql
mangodb
docker pull mongo:latest //拉取最新镜像
docker iamges // 查看所有镜像
在跟路径下创建 /data/mongo
mkdir -p /data/mongo
docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo --auth
在上面的命令中,几个命令参数的详细解释如下:
-p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
-v 为设置容器的挂载目录,这里是将本机的“/data/mongo”目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
–name 为设置该容器的名称
-d 设置容器以守护进程方式运行
–auth:需要密码才能访问容器服务
docker ps // 查看运行的镜像
进入mango 里面创建用户
docker exec -it mongodb mongo admin
$ docker exec -it mongodb mongo admin
# 创建一个名为 admin,密码为 admin的用户,验证数据库是 admin 。
> db.createUser({ user:'admin',pwd:'admin',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
创建 tf_business_iot 数据库
use tf_business_iot; // 创建数据库
db.auth('admin', 'admin')
要先验证一下 admin 用户 # 创建一个名为 iotroot,密码为 iotpwd 的用户,验证数据库是 ttsf_business_iot,操作权限是readWrite。
db.createUser({ user:'iotroot',pwd:'iotpwd',roles:[ { role:'readWrite', db: 'tf_business_iot'},"readWrite"]});
MongoDB用户权限
内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system 角色说明: Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
如果navicat 看不到 mongodb 的数据库
navicat 打开 查看-》显示隐藏的项目