docker安装MySQL-小白踩大雷版(8.0版本之后)

docker镜像地址:https://hub.docker.com/

这里以8.0.28为例:

1、查看可用的 MySQL 版本

访问 MySQL 镜像库地址: Docker 。

可以通过 Sort by 查看其他版本的 MySQL,默认是最新版本 mysql:latest 。

来自 < Docker 安装 MySQL | 菜鸟教程>

可以用 docker search mysql 命令来查看可用版本:

2、拉取 MySQL 镜像

这里如果我们拉取官方的最新版本的镜像:

$ docker pull mysql:latest

拉取8.0.28版本:

docker pull mysql:8.0.28

3、查看本地镜像

使用以下命令来查看是否已安装了 mysql:

$ docker images

 4、运行容器

安装完成后,我们可以使用以下命令来运行 mysql 容器:

 

docker run -p 3306:3306 --name mysql \      

-v /mydata/mysql/log:/var/log/mysql \ 

-v /mydata/mysql/data:/var/lib/mysql \

-v /mydata/mysql/conf:/etc/mysql/conf.d \

-e MYSQL_ROOT_PASSWORD=yc200509 \

-d mysql:8.0.28

参数:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • --name:给容器命名
  • -v /mydata/mysql/log:/var/log/mysql:将配置文件挂载到主机/mydata/..
  • -e MYSQL_ROOT_PASSWORD=yc200509:初始化root用户的密码为yc200509

-v表示 “挂载“,如果需要经常修改MySQL配置文件,每次都要通过docker exec -it mysql /bin/bash进入容器内部修改,这样的操作十分繁琐,所以这里将常用的MySQL配置文件从docker容器中”拷贝“一份,相当于做成了一个快捷方式,链接 到Linux系统中,这样修改更加方便。

-v /mydata/mysql/log:/var/log/mysql \      #挂载MySQL日志文件到Linux的/mydata/mysql/log目录下

-v /mydata/mysql/data:/var/lib/mysql \    #挂载MySQL运行期间产生的数据到Linux的/mydata/mysql/data目录下

-v /mydata/mysql/conf:/etc/mysql/conf.d \  #挂载MySQL的配置文件到Linux的/mydata/mysql/conf目录下

5、查看docker启动的容器

docker ps -a

 

可以执行docker logs mysql 看一下日志

6、配置MySQL

1)进入挂载的mysql配置目录

cd /mydata/mysql/conf

 

2)修改配置文件 my.cnf

vim my.cnf

拷贝以下内容:

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve



# Esc

# :wq

3)docker重启使MySQL配置生效:

docker restart mysql

重启报错:

Error response from daemon: Cannot restart container mysql: driver failed programming external co nnectivity on endpoint mysql (1e1037a0ad79edfbd8780643fbeccf2fff9ad9a6433c9f0d4d2ec080a9dcdf65): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-desti nation 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.

翻译过来大概意思:无法重新启动容器mysql,程序未能连接mysql的端口,因为3306端口是dport

解决办法:

1.启动3306的 端口:

iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT

2.如果不行,重启docker

docker服务启动时定义的自定义链DOCKER会被清除

systemctl restart docker

然后启动mysql服务:docker start mysql

7在Windows上测试这个MySQL连接:

dos窗口登录虚拟机的MySQL是没问题的,但是使用navicat连接不成功:

使用本地navicat连接MySQL,报错:

解决办法:

先从dos窗口登录MySQL:

    1

    2

    3

    4

    5

    6

    7

    8

    9

   10

   11

   12

   13

   14

   15

   16

   17

   18

   19

   20

   21

   22

   23

   24

   25

   26

   27

   28

   29

   30

   31

   32

   33

   34

   35

mysql -h 192.168.41.130 -u root -p

Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 18

Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

4 rows in set (0.01 sec)

mysql> use mysql;

Database changed

mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'yc200509' PASSWORD EXPIRE NEVER;

Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yc200509';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

参考(2条消息) Navicat 连接 mysql8 报错:2059 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded:xx_低端程序狗的博客-CSDN博客

8、进入容器:

docker exec -it mysql(容器名或者写容器id,前几位也可以,只要表示出容器的唯一性) /bin/bash

7、删除容器

参考了部分博客,侵删。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值