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 mysql
与docker 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的主要内容,如果未能解决你的问题,请参考以下文章