Docker 安装 MySQL-8.0.23详解

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 安装 MySQL-8.0.23详解相关的知识,希望对你有一定的参考价值。

  1. 下载安装

第一步:在hub.docker.com上搜索mysql镜像

第二步:拉取指定版本的MySQL

docker 拉取MySQL 指定版本8.0.23

docker pull mysql:8.0.23

第三步:检查MySQL镜像

docker images
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx                latest              0e901e68141f        8 months ago        142MB
mysql                5.7                 2a0961b7de03        8 months ago        462MB
minio/minio          latest              e31e0721a96b        13 months ago       406MB
wurstmeister/kafka   latest              2dd91ce2efe1        13 months ago       508MB
zookeeper            latest              36c607e7b14d        14 months ago       278MB
rabbitmq             management          6c3c2a225947        14 months ago       253MB
mysql                8.0.23              cbe8815cbea8        22 months ago       546MB
elasticsearch        7.6.2               f29a1ee41030        2 years ago         791MB
delron/fastdfs       latest              8487e86fc6ee        4 years ago         464MB
[root@localhost ~]#

第四步:启动运行MySQL镜像 (docker run 用于启动一个容器)

docker run -p 3306:3306 --name mysql \\
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \\
-v /usr/local/docker/mysql/conf:/etc/mysql \\
-v /usr/local/docker/mysql/logs:/var/log/mysql \\
-v /usr/local/docker/mysql/data:/var/lib/mysql \\
-e MYSQL_ROOT_PASSWORD=root \\
-d mysql:8.0.23

温馨提示:使用mkdir -p 创建MySQL服务依赖配置文件夹。

mkdir -p /usr/local/docker/mysql/mysql-files
mkdir -p /usr/local/docker/mysql/conf
mkdir -p /usr/local/docker/mysql/logs
mkdir -p /usr/local/docker/mysql/data

温馨提示:如果安装MySQL容器过程中失败了,则可通过docker ps 查看以前的容器,假如已存在,则通过docker rm 镜像id 删除再重新安装即可。

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
1c3d38b948ba        zookeeper           "/docker-entrypoint.…"   6 months ago        Up 9 days           2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper
62233dfad35b        minio/minio         "/usr/bin/docker-ent…"   6 months ago        Up 9 days                                                                  minio-server
[root@localhost ~]#

第五步:停止mysql服务(可选)

执行完第四个步骤(启动运行mysql镜像),mysql就会自动启动了,假如需要停止这个

服务可以执行:

docker stop mysql

第六步:启动mysql服务

假设mysql服务没有正常启动运行,但mysql容器是存在的,可以通过如下方式启动mysql。

docker start mysql

假设希望查看mysql启动时的日志,可以执行 docker container logs mysql 这个指令。

第七步:查看docker启动的服务

docker ps
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
f81aa5f48427        mysql:8.0.23        "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:3306->3306/tcp, 33060/tcp                      mysql
1c3d38b948ba        zookeeper           "/docker-entrypoint.…"   6 months ago        Up 9 days           2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper
62233dfad35b        minio/minio         "/usr/bin/docker-ent…"   6 months ago        Up 9 days                                                                  minio-server
[root@localhost ~]#

第八步:进入容器 (退出容器用exit)

docker exec -it mysql bash

第九步:登陆(默认密码root),一定要先进入mysql容器。

mysql -uroot -proot

第十步:设置mysql开机自启动(可选)

docker update mysql --restart=always

2.如何重启mysql服务?

docker restart mysql

3.连接MySQL时要注意事项

第一步:关闭linux宿主机的防火墙 (假如直击连接),命令忘了可以通过搜索引擎查。

systemctl stop firewalld.service

拓展:查看防火墙状态

systemctl status firewalld.service

第二步:重启docker

systemctl restart docker

第三步:启动mysql

docker start mysql

Navicat连接MySQL-8 遇到的问题

问题描述

1251-client does not support authentication protocol requesred by server;consider upgrading MySQL Client

解决方案一:

  1. 进入mysql容器内部

 docker exec -it mysql bash
  1. 进入mysql

mysql -u root -p root
  1. 使用mysql数据库

use mysql
  1. 查看用户信息

备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码

select host,user,plugin,authentication_string from mysql.user; 
  1. 修改用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
  1. 更新user为root,host为% 的密码为123456

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 

解决方案二:

  1. 进入mysql容器内部

 docker exec -it mysql bash
  1. 进入mysql

mysql -u root -p root
  1. 使用mysql数据库

use mysql
  1. 创建用户zzg 并指定密码123456

 create user 'zzg'@'%' identified by '123456'; 
  1. 为zzg 用户授予管理员权限

grant all privileges on *.* to 'zzg'@'%' with grant option; 
  1. 刷新权限

flush privileges
  1. 修改用户zzg 的密码,并指定密码存储方式

alter user 'zzg'@'%' identified with mysql_native_password by '123456';

以上是关于Docker 安装 MySQL-8.0.23详解的主要内容,如果未能解决你的问题,请参考以下文章

一 安装docker(详解)

MySQL8.0-CentOS7.0-解压版安装

MySQL5.7升级到8.0

MySQL5.7升级到8.0

[转]MySQL 8.0.23的MGR新姿势

MySQL 8.0.23上遇到一个FIND_IN_SET的BUG