版本更新比较快,建议按照官网说明安装,以下两个按照文档地址都可以成功安装

  • MySQL 官网:
  • Docker 官网:

下面以 Docker 的镜像 mysql 为例

1、查询想要安装的mysql版本

链接: https://hub.docker.com/.

docker 手工建立mysql镜像 mysql docker镜像下载_配置文件

2、根据镜像描述选择合适版本

docker 手工建立mysql镜像 mysql docker镜像下载_docker_02

3、拉去mysql镜像(我选的8.0)

//拉去 mysql:8.0 镜像
docker pull mysql:8.0
//查看所有镜像
docker images

docker 手工建立mysql镜像 mysql docker镜像下载_mysql_03

4、创建mysql容器

建议将配置文件挂载出来(但是 docker 安装的 mysql 默认目录 /etc/mysql/conf.d 为空),不用预先下载

在 /home/mysql/conf 目录下,新增 my.cnf 文件添加如下内容

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
default-time-zone = '+8:00'

#最大链接数
max_connections=1024

#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
log_bin_trust_function_creators=1
#启用log-bin
log-bin=mysql-bin

#设置日志格式
binlog_format=mixed

#设置binlog清理时间
expire_logs_days=7

# 数据表默认时区
default-time-zone='+08:00'

# Custom config should go here
!includedir /etc/mysql/conf.d/

运行命令挂载配置文件和数据即可

docker run --name mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql mysql:8.0

命令说明
-p 3307:3306:将宿主机的3307端口映射到容器的3306端口(默认3306:3306)

-v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql:将配置文件和数据挂载出来,注意不同版本配置文件数据目录可能不同,详细信息可在官网查看

-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
-d: 后台运行容器,并返回容器ID

mysql:8.0: 你的容器id或者名字

–name mysql8.0: 为容器起别名,如果不设置,系统会自动生成一个名字

docker 手工建立mysql镜像 mysql docker镜像下载_docker_04

5、查看所有的容器

docker 手工建立mysql镜像 mysql docker镜像下载_配置文件_05


启动mysql8.0容器

如果你的容器是退出状态,可以使用如下命令开启,docker8.0为你的容器id或名字

docker start docker8.0

6 、进入容器

//退出容器,容器不会关闭
docker exec -it docker8.0 /bin/bash  或 docker exec -it docker8.0 bash
//退出容器容器关闭
docker attch -it docker8.0 /bin/bash  或 docker attch -it docker8.0 bash

-t: 在新容器内指定一个伪终端或终端。

-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

可以看见创建容器时设置的挂载目录

docker 手工建立mysql镜像 mysql docker镜像下载_docker_06


docker 手工建立mysql镜像 mysql docker镜像下载_mysql_07

7、 连接mysql mysql -u root -p

docker 手工建立mysql镜像 mysql docker镜像下载_配置文件_08

8、 开启远程连接

select host,user,plugin from mysql.user; //如下可以看到默认支持远程连接

# 如果不支持使用如下语句修改(mysql/mysql-server 镜像默认没有开启远程连接)
# update mysql.user set host ='%' where user='root';

docker 手工建立mysql镜像 mysql docker镜像下载_docker 手工建立mysql镜像_09


有的远程连接可能是下面情况

docker 手工建立mysql镜像 mysql docker镜像下载_linux_10