docker 安装mysql5.7前言
MySQL 是目前最流行的关系型数据库管理系统,开发者是瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。具有体积小、速度快、成本低等特点。
- MySQL是开源的,目前属于Oracle公司
- MySQL支持大型的数据库。
- MySQL使用标准的SQL数据语言形式。
- MySQL可以运行于不同的操作系统上。
- MySQL支持多种语言,例如Java、Python、PHP等等
下载地址
MySQL 下载
安装
安装docker不在本文讲解,本文只讲解使用docker安装Mysql5.7
- 拉取镜像
docker pull mysql:5.7
- 创建目录
mkdir -p /home/dockerdata/mysql/confmkdir -p /home/dockerdata/mysql/logsmkdir -p /home/dockerdata/mysql/mysql
- 创建配置文件
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 : 不能使用双引号来引用字符串,因为会被解释为识别符。
- 运行
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这个镜像来创建和运行实例
- 设置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