解决docker mysql 8.0 遇到sql_mode=only_full_group_by的问题
背景:为了避免本地环境污染,希望通过docker安装mysql,练习sql使用。安好之后发现建表的时候遇到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
更多推荐
已为社区贡献1条内容
所有评论(0)