当前位置:   article > 正文

解决docker mysql 8.0 遇到sql_mode=only_full_group_by的问题_docker 安装的mysql8 关闭only_full_group_ by

docker 安装的mysql8 关闭only_full_group_ by

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

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

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

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

二、遇到sql_mode=only_full_group_by的问题

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

  1. docker stop mysql
  2. 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文件夹(在进行复制前需要先退出)

  1. # 进入容器
  2. docker exec -it mysql bash
  3. # 将容器里的mysql的配置文件copy 到 /docker/mysqld.cnf目录下
  4. 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连接数据库,报错

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

补充:dokcer 一些常规命令

  1. # 查看当前运行中的容器
  2. docker ps
  3. docker ps -l
  4. # 启动、终止容器
  5. docker stop 容器id
  6. docker start 容器id

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/307895
推荐阅读
相关标签
  

闽ICP备14008679号