Docker 系列之 MySQL 容器化部署

本贴最后更新于 1383 天前,其中的信息可能已经东海扬尘

目录

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

镜像获取

使用 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

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    915 引用 • 931 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...