解决docker mysql 8.0 遇到sql_mode=only_full_group_by的问题

背景:为了避免本地环境污染,希望通过docker安装mysql,练习sql使用。安好之后发现建表的时候遇到sql_mode=only_full_group_by的问题。

参考:Win10中Docker下修改mysql配置(主要修改utf-8字符集) - 灰信网(软件开发博客聚合)

一、拉去mysql:8.0版本的镜像,启动容器并做端口映射

docker pull mysql:8.0
# 启动容器并做端口映射
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

二、遇到sql_mode=only_full_group_by的问题

1.停掉刚刚的容器,并删除

docker stop mysql
docker rm mysql

2.重启一个容器并做本机和docker的文件夹挂载

docker run --name mysql8 -p 3306:3306 -v D:/docker_conf:/docker -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0

--name mysql8:给容器起个名字叫mysql8

-p 3306:3306: 将容器中的3306端口映射到主机的3306端口

-v D:/docker_conf:/docker: 将主机的D:/docker_conf目录挂载到容器的/docker

-e MYSQL_ROOT_PASSWORD=123456: 设置mysql的root用户的密码为123456

 4.复制mysqld.cnf文件到/docker文件夹(在进行复制前需要先退出)

# 进入容器
docker exec -it mysql bash
# 将容器里的mysql的配置文件copy 到 /docker/mysqld.cnf目录下
cp /etc/mysql/my.cnf /docker/my.cnf

5.在本机上修改刚才复制的文件,在mysqld.cnf文件末尾加上

sql_mode="STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_ENGINE_SUBSTITUTION"

6.在容器中将刚才修改后的文件覆盖回去

cp /docker/my.cnf /etc/mysql/my.cnf
7.重启刚刚的容器
docker restart mysql8

此时使用navicat连接数据库,报错

# 进入容器
docker exec -it mysql bash
# MYSQL设置初始密码
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '123456';
# 重启容器
docker restart mysql8

补充:dokcer 一些常规命令

# 查看当前运行中的容器
docker ps
docker ps -l

# 启动、终止容器
docker stop 容器id
docker start 容器id

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值