Linux下Docker安装mysql-超详细步骤
-
安装Docker Engine
官方参考文档:https://docs.docker.com/engine/install/centos/
-
若之前有安装docker,需要先卸载之前的docker
sudo yum remove docker \\docker-client \\docker-client-latest \\docker-common \\docker-latest \\docker-latest-logrotate \\docker-logrotate \\docker-engine
-
安装必要的依赖
sudo yum install -y yum-utils
-
设置docker仓库
sudo yum-config-manager \\ --add-repo \\ https://download.docker.com/linux/centos/docker-ce.repo
-
查看可以安装的docker版本
yum list docker-ce --showduplicates | sort -r
-
安装最新的或者指定的docker版本
最新的:sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin指定的:sudo yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io docker-compose-plugin

-
启动docker并设置为开机启动
sudo systemctl start docker && sudo systemctl enable docker
-
测试docker是否安装成功
sudo docker run hello-world

出现 Hello from Docker! 表示docker安装成功!
-
配置docker的镜像加速器
先进入到/etc/docker, 找到daemon.json文件,打开文件配置镜像加速器地址。(没有的话需要自己创建目录和json文件。)

{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com","https://e9yneuy4.mirror.aliyuncs.com","https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors"]
}
参考文档:https://www.docker.com/
参考文档:https://hub.docker.com/
-
下载mysql的image镜像
docker pull mysql:5.7
-
查看下载的镜像
docker images

-
根据镜像创建docker容器
docker run -d -p 3306:3306 --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/conf.d -e MYSQL_ROOT_PASSWORD=abc123456 --name mysql mysql:5.7
-
查看创建的docker容器实例
docker ps

出现如上的容器实例ID和容器实例名mysql的信息表示 docker启动mysql容器成功!
-
进入到docker容器实例修改访问权限
-
进入到docker容器实例中
docker exec -it mysql /bin/bash

-
mysql5.7版本支持远程Ip访问需要修改访问授权
mysql> grant all privileges on *.* to root@"%" identified by "abc123456" with grant option;
-
刷新权限集
mysql> flush privileges;
-
修改完成后输入exit退出容器实例,返回到宿主机上

-
进入docker修改my.conf配置
-
进入到/etc/mysql/conf.d 下修改 my.conf文件的配置

-
或者修改宿主机上的配置文件可以映射修改容器内的配置(/usr/local/mysql/conf/my.conf)

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
-
打开防火墙端口
-
远程连接测试