1.查找镜像:

docker search mysql

也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:​​https://hub.docker.com/_/mysql/​

使用Docker安装mysql并连接_linux

2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):

命令:
指定版本安装命令 : docker pull mysql:5.7.35
不指定命令,直接安装最新版是这个命令 : docker pull mysql

[root@zjj101 ~]# docker pull mysql:5.7.35
5.7.35: Pulling from library/mysql
07aded7c29c6: Pull complete
f68b8cbd22de: Pull complete
30c1754a28c4: Pull complete
1b7cb4d6fe05: Pull complete
79a41dc56b9a: Pull complete
00a75e3842fb: Pull complete
b36a6919c217: Pull complete
5e11fe494f45: Pull complete
9c7de1f889a7: Pull complete
cf6a13d05a76: Pull complete
fc5aa81f393a: Pull complete
Digest: sha256:360c7488c2b5d112804a74cd272d1070d264eef4812d9a9cc6b8ed68c3546189
Status: Downloaded newer image for mysql:5.7.35
docker.io/library/mysql:5.7.35
[root@zjj101 ~]#

3.挂载数据以及配置文件

# 运行mysql命名容器名称为mysql-service并且设置root账号初始密码为root

docker run -d -p 3306:3306 --name mysql-service -e MYSQL_ROOT_PASSWORD="root" mysql

也可以根据image id去进行更新,44241dbd4d38是容器id
docker run -d -p 3306:3306 --name mysql-service -e MYSQL_ROOT_PASSWORD="root" 44241dbd4d38

进入Docker内部

docker exec -it mysql-service bash

确定Docker内 MySQL 文件相关路径

# 查找Docker内,MySQL配置文件my.cnf的位置
mysql --help | grep my.cnf

使用Docker安装mysql并连接_docker_02

创建本地路径并挂载Docker内数据

# 创建Linux本地文件夹
mkdir -p /root/docker/mysql/conf && mkdir -p /root/docker/mysql/data


# 将测试容器里 MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可  
# mysql-service:/etc/mysql/my.cnf 是docker内部的文件夹
# /root/docker/mysql/conf 是你Linux宿主机的文件夹

docker cp mysql-service:/etc/mysql/my.cnf /root/docker/mysql/conf

4.创建 MySQL 容器并启动

将上面创建的mysql容器删除掉,重新创建一个

44241dbd4d38 是容器的containerid

docker run --name mysql-server \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/root/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d 44241dbd4d38

如果上面不行试试下面的

# 最后-d 可以跟镜像id
docker run --name mysql-server \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \
--mount type=bind,src=/root/docker/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \
--mount type=bind,src=/root/docker/mysql/data,dst=/var/lib/mysql \
--restart=on-failure:3 \
-d mysql

说明:

  • –name:为容器指定一个名字
  • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
  • -e:username=“xxx”,设置环境变量
  • –restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
  • -mount:绑定挂载
  • -d:后台运行容器,并返回容器 id

其它

1.修改远程访问

如果软件连不上数据库的话

进入Docker的MySQL内部容器里面, 输入 mysql --help | grep my.cnf
命令 ,可以查找到my.cnf文件位置

root@dc11a462d290:/# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

直接修改 my.cnf

添加配置 : bind-address =0.0.0.0

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
bind-address =0.0.0.0
# Custom config should go here
!includedir /etc/mysql/conf.d/

保存重启mysql

2.2059错误

使用Docker安装mysql并连接_docker_03

# 修改加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 更新密码,一定要做这一步骤,哪怕不修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
# 刷新配置
FLUSH PRIVILEGES;