docker 安装mysql5.7前言

MySQL 是目前最流行的关系型数据库管理系统,开发者是瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。具有体积小、速度快、成本低等特点。

  • MySQL是开源的,目前属于Oracle公司
  • MySQL支持大型的数据库。
  • MySQL使用标准的SQL数据语言形式。
  • MySQL可以运行于不同的操作系统上。
  • MySQL支持多种语言,例如Java、Python、PHP等等

下载地址

MySQL 下载

安装

安装docker不在本文讲解,本文只讲解使用docker安装Mysql5.7

  1. 拉取镜像
docker pull mysql:5.7
  1. 创建目录
mkdir -p /home/dockerdata/mysql/confmkdir -p /home/dockerdata/mysql/logsmkdir -p /home/dockerdata/mysql/mysql
  1. 创建配置文件
cd /home/dockerdata/mysql/conf/vi my.cnf[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]lower_case_table_names=1#取消 group 严格模式sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONcharacter-set-server=utf8mb4#保存后退出

配置文件介绍:

​目前上方的配置文件是比较精简的配置文件,如果需要,可以自行添加相关配置

  • default-character-set : 设置Mysql客户端默认的字符集
  • lower_case_table_names : 是否区分大小写,有三个值1、2、0
    • 1-存储在磁盘是小写,比较时不区分大小写
    • 2-存储为给定的大小写但是比较时是小写
    • 0-存储为给定的大小写和比较时区分大小写
  • sql-mode :
    • ONLY_FULL_GROUP_BY : GROUP BY 聚合操作,如果在select列里面,没有在GROUP BY中出现,则这个sql不合法
    • NO_AUTO_VALUE_ON_ZERO : 该值会影响自增列的插入,意思是自增长列可以为0,默认情况下自增长列是从1开始,如果你插入id为0的数据会报错,设置该参数后,可以正常插入id为0的数据
    • STRICT_TRANS_TABLES : 如果一个值不能插入到一个事务中,则中断操作,对非事务不限制
    • NO_ZERO_IN_DATE : 不允许日期和月份为0,例如2022-01-00是不允许的,但是0000-01-01是允许的
    • NO_ZERO_DATE : 不允许插入零日期,不支持插入包含0的日期
    • ERROR_FOR_DIVISION_BY_ZERO : 在insert或者update中,如果数据被清除,则产生错误而非警告,如果未给出该模式,那么数据被清除时Mysql会返回NULL
    • NO_AUTO_CREATE_USER : 禁止GRANT创建密码为空的用户
    • NO_ENGINE_SUBSTITUTION : 如果需要的存储引擎被禁用或者未编译,那么抛出错误,不设置此值,用默认的存储引擎替代,并抛出一个异常
    • PIPES_AS_CONCAT : 将”||”视为字符串的连接操作符而非或运算符,和Oracle数据库是一样的。
    • ANSI_QUOTES : 不能使用双引号来引用字符串,因为会被解释为识别符。
  1. 运行
docker run --restart always -p 3306:3306 --name mysql -v /home/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/dockerdata/mysql/logs:/logs -v /home/dockerdata/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

参数介绍:

  • —restart always : 在容器退出后总是重启容器
  • -p 3306:3306 : 将容器的3306端口映射到主机的3306端口
  • —name mysql : 设置实例名称是mysql
  • -v …/… : 将宿主机目录挂载到容器内部,前面的是宿主机目录,后面的是容器目录,上方命令挂载了my.cnf、日志目录、mysql数据目录
  • -e MYSQL_ROOT_PASSWORD=root : 设置初始化root用户密码
  • -d : 以后台方式运行实例
  • mysql:5.7 : 指定使用mysql:5.7这个镜像来创建和运行实例
  1. 设置mysql root用户可以远程登录,需要bash连接到docker里面
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;FLUSH PRIVILEGES;

原文链接: https://monkey.blog.xpyvip.top/archives/docker安装mysql57