mysql5.7 only_full_group_by_Docker之MySql5.7中only_full_group_by的问题解决

MySql的镜像,默认情况下,MySql5.7中的sql_mode含有only_full_group_by,group by语句有时候会报错。通过手动修改sql_mode,那么如果删除容器或者新建容器,就会导致我们手动设置的sql_mode失效,所以自己制作一个基于mysql镜像的镜像,解决sql_mode含有only_full_group_by的问题。

运行容器

List-1

mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD --name mysql1 mysql:5.7.9

5514c31a4e0bc524cee3cdcb962ac73b4fdeb1b5b32d70fa2840e9029b203a8c

进入容器安装vim

List-2

mjduan@mjduan:/opt % docker exec -ti mysql1 /bin/bash

#在容器内执行如下命令

root@44504961189a:/opt % apt-get update

......

root@44504961189a:/opt % apt-get install vim

......

在容器内,/etc/mysql/conf.d/下,新建.cnf文件,将配置写入到里面,我们新建custom.cnf文件,写入如下内容:

List-3

root@44504961189a:/# more /etc/mysql/conf.d/custom.cnf

[mysqld]

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

退出容器,用docker commit命令由容器制作镜像,

List-4

mjduan@mjduan:/opt % docker commit mysql1 mysql_custom:1.0

之后docker images就可以看到镜像mysql_custom:1.0了。

mysql_custom:1.0就是我们需要的,用它来启动容器,如下List-5

List-5

mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=新密码 --name mysql_mjduan2 mysql_custom:1.0

44504961189a45442a6b33e5945778b73bc3dd058ab9e794c56b0bbfc3e603bf

之后进入容器mysql_mjduan2,用mysql命令进入mysql命令行时就会提示要root密码了。再次查看sql_mode,就会看到sql_mode没有only_full_group_by了。

注意,不要让别人拿到你的镜像,否则通过docker inspect命令就可以看到你设置的root密码。不过可以在创建容器的时候用MYSQL_ROOT_PASSWORD来设置新的root密码。

注:

也可以直接用Dockerfile基于mysql的镜像进行制作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值