docker 仓库搜索mysql
docker search mysql
docker 仓库拉取mysql8.0.18
docker pull mysql:8.0.18
查看本地仓库镜像是否下载成功
docker images
安装运行mysql8.0.18
1.提前创建挂载目录,并且读写权限:
# 创建mysql挂载需要的文件目录
mkdir /data/mysql/data
mkdir /data/mysql/log
mkdir /data/mysql/mysql-files
mkdir /data/mysql/conf
# 文件授权(777为最高可读可写权)
chmod 777 /data/mysql
docker run \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /data/mysql/data:/var/lib/mysql:rw \
-v /data/mysql/log:/var/log/mysql:rw \
-v /data/mysql/mysql-files:/var/lib/mysql-files/ \
--name mysql \
--restart=always \
-d mysql:8.0.18
2.拷贝配置文件到宿主机:
# etc/mysql/my.cnf 为容器内部的文件路径,有可能版本不同,路径有所区别,不过都是在 etc目录下
# /data/mysql/conf 是上一步提前创建好的文件
docker cp mysql8.0:/etc/mysql/my.cnf /data/mysql/conf/
3.停止容器:
docker stop mysql8.0.18
4.删除容器:
docker rm mysql8.0.18
5.重新执行生成容器(增加了对配置文件my.cnf的映射,直接映射,容器启动会有问题,通过执行下面-v后面的映射,最终实现数据持久化,数据存放在宿主机而不是容器内):
docker run \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /data/mysql/data:/var/lib/mysql:rw \
-v /data/mysql/log:/var/log/mysql:rw \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf:rw \
-v /data/mysql/mysql-files:/var/lib/mysql-files/ \
--name mysql8.0 \
--restart=always \
-d mysql:8.0.18
6.上面代码的意思是: docker run -p 本地主机端口号:容器服务端口号 --name 容器名字 [-e 配置信息修改] -d 镜像名字
docker mysql8.0 修改密码+创建用户与授权
修改密码
# 进入容器(mysql位置为容器名,也可以是容器Id)
docker exec -it mysql bash
# 进入数据库(如果按照我上面的步骤操作就不需要跳过密码登录,因为我在挂载的时候设置了密码为 root)
mysql -u root -p root
# 修改密码
UPDATE mysql.user SET authentication_string=''新密码" WHERE user='root' and host='localhost';
# 修改密码为用不过期
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 刷新
flush privileges;`
创建用户与授权
# 授权
alter user 'root'@'%' IDENTIFIED BY '你的密码';
# Query OK, 0 rows affected (0.02 sec)(成功文案提示)
# 刷新
flush privileges;`