一、拉取镜像
# 拉取镜像
docker pull mysql
# 或者
docker pull mysql:latest
# 指定版本号
docker pull mysql:5.7
# 以上两个命令是一致的,默认拉取的就是 latest 版本的
# 我们还可以用下面的命令来查看可用版本:
docker search mysql
二、查看镜像
docker images
三、运行镜像
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
#我的运行
docker run -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest
#如果要数据持久化就得挂载卷
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest
四、修改mysql的密码
#查看启动的MySQL容器id
docker ps |grep mysql
---->
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
75580b82c2eb mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes mysql02
#进入启动的MySQL容器中
docker exec -it 75580b82c2eb /bin/bash
#修改MySQL配置文件,在最后一行添加skip-grant-tables代码( //跳过mysql的密码验证)
#(如果容器中没有vim命令的话,可以依次使用命令apt-get update ,apt-get install vim 下载安装vim)
vim /etc/mysql/conf.d/docker.cnf
#重启数据库
service mysql restart
#重启MySQL容器
docker restart 75580b82c2eb
#再次进入启动的MySQL容器内
docker exec -it 75580b82c2eb /bin/bash
#使用语句mysql -u root -p 语句,登录数据库,不用输入密码,直接回车
mysql -u root -p
#使用MySQL数据库
use mysql
#更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
#刷新权限
FLUSH PRIVILEGES;
#再次编辑mysql配置文件,删除刚刚添加的skip-grant-tables
vim /etc/mysql/conf.d/docker.cnf
#再次重启mysql
service mysql restart
#再次重启docker容器
docker restart 75580b82c2eb