Docker中安装MySQL

本文介绍了在软件开发背景下,如何利用Docker安装MySQL,以避免系统资源浪费和性能下降。阐述了使用Docker安装MySQL的优势,如不占用系统资源、便于升级和配置。并提供了详细的安装脚本及注意事项,特别是关于`lower_case_table_names`属性在不同操作系统中的配置差异,提醒读者在实际操作中避免踩坑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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节“标识符区分大小写”。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值