第三人称__- 的个人博客

记录精彩的程序人生

Open Source, Open Mind,
Open Sight, Open Future!
  menu
6 文章
5889 浏览
1 当前访客
ღゝ◡╹)ノ❤️

Docker 系列之 MySQL 容器化部署

目录

  • 镜像获取
  • 创建容器
  • 远程连接

镜像获取

使用 docker 命令下载最新版的MySQL镜像,docker 的安装和使用可以查看《Docker 系列之 Docker 简单介绍与安装》《Docker 系列之 Docker 常用命令》

docker pull mysql	#未指定镜像版本默认下载最新版

dockerpull.png

或者到docker仓库查看MySQL镜像的版本,选择自己需要的版本下载

dockertag.png

创建容器

使用 docker image ls查看下载的镜像列表

dockerimage.png

创建MySQL容器并运行

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=test_db -e MYSQL_USER=user -e MYSQL_PASSWORD=password -v /usr/docker/mysql/conf:/etc/mysql.conf.d -v /usr/docker/mysql/logs:/logs -v /usr/docker/mysql/data:/var/lib/mysql -d mysql:latest

命令说明

* --name mysql  				#容器的名称
* -p 3306:3306  				#将容器的3306端口映射到主机的3306端口。
* -e MYSQL_ROOT_PASSWORD=password 		#初始化root用户的密码。
* -e MYSQL_DATABASE=test_db 			#可选,创建名为test_db的数据库
* -e MYSQL_USER=user				#可选,创建拥有test_db所有权限的user用户
* -e MYSQL_PASSWORD=password 			#可选,设置user用户的密码
* -v /usr/docker/mysql/conf:/etc/mysql/conf.d	#挂载容器中mysql的配置文件夹至主机的conf文件夹
* -v /usr/docker/mysql/logs:/logs		#挂载容器中mysql的日志文件夹至主机的logs文件夹
* -v /usr/docker/mysql/data:/var/lib/mysql	#挂载容器中mysql的数据文件夹至主机的data文件夹
* -d mysql:latest				#镜像ID或者Repository:Tag,查看上图

容器列表

在容器列表中可以看到刚刚运行的mysql容器以及其它正在运行的容器

docker ps

dockerps.png

远程连接

使用user用户连接MySQL,MYSQL_USER创建的用户默认拥有远程连接权限

navicatconnect.png

错误

连接MySQL时提示2059错误

navicaterror.png

原因

MySQL 8之前的版本中加密规则是 mysql_native_password,而在MySQL 8之后,加密规则改为了 caching_sha2_password

解决

更改MySQL的加密规则,首先docker命令进入容器内部

docker exec -it mysql /bin/bash

dockerexec.png

接着使用 root用户登录MySQL,输入创建容器时 MYSQL_ROOT_PASSWORD设置的登录密码

mysql -u root -p 	#登录

login.png

登录成功后执行以下操作

use mysql; 	#选择数据库
ALTER USER 'user'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 	#更改加密方式,其中的'password'为需要设置的密码
ALTER USER 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新用户密码
FLUSH PRIVILEGES; #刷新权限

update.png

完成以上操作后再次使用Navicat远程连接MySQL,连接成功

success.png


标题:Docker 系列之 MySQL 容器化部署
作者:hyboll
地址:https://blog.ovoll.cn/articles/2020/07/03/1593757525484.html