安装mysql5.7.25
下载镜像
docker pull mysql:5.7.25
创建要挂载的配置,以及数据文件夹
mkdir -p mysql/data
mkdir -p mysql/conf
MySQL配置文件名:hmy.cnf
MySQL配置文件内容:
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
上传到 mysql/conf
运行MySQL容器:
docker run \
--name mysql5 \
-e MYSQL_ROOT_PASSWORD=你的root密码 \
-p 3306:3306 \
-v 你的宿主机mysql配置文件:/etc/mysql/conf.d/文件名 \
-v 你的宿主机mysql数据:/var/lib/mysql \
-d \
mysql:5.7.25
例:
docker run \
--name mysql5 \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
安装mysql8.0.27
下载镜像
docker pull mysql:8.0.27
或者不指定版本(可不执行)
docker pull mysql
查看具体版本(可不执行)
docker image inspect (docker image名称):latest|grep -i version
创建要挂载的文件夹
[root@centos002 ~]# mkdir -p /opt/docker/mysql8/conf/
[root@centos002 ~]# mkdir -p /opt/docker/mysql8/logs/
[root@centos002 ~]# mkdir -p /opt/docker/mysql8/data/
为了拷贝一份配置文件,先随便启动一个镜像
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.27
查看是否启动成功(可不执行)
docker ps -a
启动成功后,进入容器内部拷贝配置文件,到宿主主机
docker cp mysql8:/etc/mysql /opt/docker/mysql8/conf
删除刚才的容器,重新创建容器
先停止容器
docker stop mysql8
再删除容器
docker rm mysql8
启动mysql ,挂载配置文件,数据持久化到宿主主机
docker run \
-p 3306:3306 \
--name mysql8 \
--privileged=true \
--restart unless-stopped \
-v /opt/docker/mysql8/conf/mysql:/etc/mysql \
-v /opt/docker/mysql8/logs:/logs \
-v /opt/docker/mysql8/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.27
命令解释:
-p 端口映射
–name 容器名字,自定义
–privileged=true 挂载文件权限设置
–restart unless-stopped 设置 开机后自动重启容器
-v /opt/docker/mysql8/conf/mysql:/etc/mysql 挂载配置文件
-v /opt/docker/mysql8/logs:/logs \ 挂载日志
-v /opt/docker/mysql8/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime 容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d mysql:8.0.20 后台启动,mysql
如果已经能远程连接,以下可忽略
开启远程连接:
进入容器:
docker exec -it mysql8 bash
登录mysql:
mysql -uroot -proot(u,p后面跟的是用户名和密码)
例如:
mysql -uroot -p123456
授权:
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; #修改密码 'root'
例如:
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新:
FLUSH PRIVILEGES;