版本更新比较快,建议按照官网说明安装,以下两个按照文档地址都可以成功安装
- MySQL 官网:
- 镜像 mysql:mysql-server
- 安装地址 https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-getting-started.html
- Docker 官网:
- 镜像 mysql
- 安装地址:https://hub.docker.com/_/mysql
下面以 Docker 的镜像 mysql 为例
1、查询想要安装的mysql版本
2、根据镜像描述选择合适版本
3、拉去mysql镜像(我选的8.0)
//拉去 mysql:8.0 镜像
docker pull mysql:8.0
//查看所有镜像
docker images
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: 为容器起别名,如果不设置,系统会自动生成一个名字
5、查看所有的容器
启动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) 进行交互。
可以看见创建容器时设置的挂载目录
7、 连接mysql mysql -u root -p
8、 开启远程连接
select host,user,plugin from mysql.user; //如下可以看到默认支持远程连接
# 如果不支持使用如下语句修改(mysql/mysql-server 镜像默认没有开启远程连接)
# update mysql.user set host ='%' where user='root';
有的远程连接可能是下面情况