Docker中安装MySQL

Posted 张侦毅

tags:

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

文章目录

使用docker安装mysql

为什么使用docker安装MySQL

  在软件开发中,由于项目需要,以及新技术的学习,这要求我们需要在自己的电脑中安装众多的软件,而其中相当大一部分的软件,其实我们在平常是根本不去使用的,但是不使用,不代表了不启动,亦不代表不会拖慢系统的反应速度。

  实际上我们在安装了众多的软件后,由于其不可避免的会在操作系统中写入很多软件信息,并且相当大一部分的软件,往往是随着系统自启动的,这致使我们的系统使用的越久,系统的反应速度越慢,安装的软件越多,系统的反应速度也会越慢,而安装的这些软件中,其中绝大多数是在平常的开发中根本使用不到的,因而为了避免系统资源不必要的浪费,这里推荐使用docker开发软件。

  而在这里,我们是使用docker安装MySQL

使用docker安装MySQL的好处

  使用docker安装MySQL,它的优点主要如下:

  • 不会在系统中写入文件,因而不会使系统臃肿
  • 不会软件自启,因而不会消耗过多的系统资源
  • 软件升级,迁移方便
  • 修改软件配置简单

软件版本与文档

操作系统

  • CentOS-7

MySQL

  • MySQL-5.7

DockerHub-MySQL

MySQL开发文档

安装MySQL

安装脚本

  由于docker中对容器的使用主要是通过命令行的方式进行,而命令行,我们又可以写入Linux系统的Shell脚本中,因而为了日后维护方便,这里推荐大家通过Shell脚本来维护自己安装的软件。

  通过Shell安装MySQL的脚本如下:

#!/bin/bash
cur_dir=`pwd`
docker stop mysql
docker rm mysql
docker run --name mysql -v $cur_dir/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --default-authentication-plugin=mysql_native_password --lower-case-table-names=1

说明

  pwd表示的是打印当前文件路径,而该路径赋给cur_dir,通过-v $cur_dir/data:/var/lib/mysql中的$cur_dir/data,表示将容器中的MySQL数据库文件挂载到当前路径的data文件夹下。由于在Linux系统中,文件路径不存在,系统会自动创建的特性,因而我们不用去专门创建data文件夹,该文件夹会在MySQL容器创建时,自动创建。

  -e MYSQL_ROOT_PASSWORD=root表示设置当前的系统中的环境,此处的环境设置的是MySQL的密码,此处我们的密码设置为root

  default-authentication-plugin=mysql_native_password,表示让MySQL允许远程访问。

  docker stop mysqldocker rm mysql此处是docker中停止容器并删除容器的指令,当容器本身不存在时,控制台只会进行相应的提示,而并非错误信息,是不影响使用的。

  --lower-case-table-names=1表示让MySQL软件忽略数据表名的大小写。

注意事项

  这里尤为需要注意的是,在MySQL中,由于操作系统的不同,MySQL的配置亦会出现相应的不同。这里我们以上面的lower_case_table_names为例来进行说明:

lower_case_table_names属性

属性
命令行--lower-case-table-names[=#]
系统参数lower_case_table_names
作用域全局
动态
SET_VAR提示应用
类型Integer
默认值0
最小值0
最大值2

  在其官方的开发文档中有如下一句话需要我们特别注意:

On Windows the default value is 1. On macOS, the default value is 2.
On Linux, a value of 2 is not supported; the server forces the value
to 0 instead.

  它们的意思是Windows与苹果操作系统中,其默认值为1,在其它操作系统中,其默认值为2,而在Linux系统中,其默认值2并不支持,因而此处选择用0来代替。

  最后再来解释下lower_case_table_names不同值的含义,如下:

如果设置为0,表名将按指定方式存储,并且比较区分大小写。如果设置为1,表名将以小写形式存储在磁盘上,并且比较不区分大小写。如果设置为2,则表名按给定格式存储,但以小写形式进行比较。此选项还适用于数据库名称和表别名。有关其他详细信息,请参阅第9.2.3节“标识符区分大小写”。

  而不注意此处的人,免不了要踩很多坑。

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

Docker中安装mysql

在docker中安装mysql

如何在docker中安装vsftp

在Windows Docker中安装MySQL

在 Docker 中安装 MySQL 失败并显示错误消息“无法通过套接字连接到本地 MySQL 服务器”

在 Docker 中安装 MySQL 失败并显示错误消息“无法通过套接字连接到本地 MySQL 服务器”