docker 安装 MySQL
版本: 8.0.26
一、拉镜像
docker pull mysql:8.0.26
二、启动
#创建文件夹
mkdir -p /data/docker/mysql/config
mkdir -p /data/docker/mysql/data
docker run -d --name mysql8 \
-v /data/docker/mysql/config:/etc/mysql/conf.d \
-v /data/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
--restart always mysql:8.0.26
三、解释
docker run -d --name mysql8 \
#启动一个名叫 mysql8 的服务 -d 是以后台模式运行容器
-v /data/docker/mysql/config:/etc/mysql/conf.d \
#-v 是挂载 冒号前面的是实际地址,冒号后面是 docker 容器内地址,固定写法
-e MYSQL_ROOT_PASSWORD=root \
#临时修改配置文件设置密码为 root
-p 3306:3306 \
#映射端口
--restart always mysql:8.0.26
#--restart always 为自启动
#mysql:8.0.26 为需要启动的镜像名称,可以通过 docker images 来查看
四、链接上去执行语句
4.1、MySQL 8 对 group_by 的限制
问题描述:
Expression #57 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hospital_admin.t2.agent_id' which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by"
问题出在 MySQL 8 对 group_by 的限制
执行语句:
SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
4.2、对连接数的限制
#mysql 链接数量查看
show variables like '%max_connections%';
#mysql 链接数量修改
set global max_connections=9999;