文章目录
1、使用 Docker 搭建 MySQL 环境
(1)搜索镜像
我只想安装MySQL5.7的版本,所以需要确定版本,在Docker Hub上搜索MySQL
(2)拉取镜像
从上图得到对应版本的命令为
docker pull mysql:5.7.31
(3)启动镜像
docker run -p 3306:3306 --name mysql \
-v /tellsea/docker/mysql/conf:/etc/mysql/conf.d \
-v /tellsea/docker/mysql/logs:/logs \
-v /tellsea/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.31
-v: 将指定目录挂载到容器的对应目录
(4)远程连接MySQL
进入MySQL容器
docker exec -it d2ea033d67be /bin/bash
登录MySQL,密码123456
mysql -u root -p
远程连接成功!
2、使用 Docker 搭建 MySQL8 环境
(1)安装命令
上面的5.7过程已经很详细了,我这里就直接粘贴命令,简单的说明干什么的就可以了
下载镜像
docker pull mysql:8.0.22
运行容器
docker run -p 3306:3306 --name mysql8 \
-v /tellsea/docker/mysql8/conf:/etc/mysql/conf.d \
-v /tellsea/docker/mysql8/logs:/logs \
-v /tellsea/docker/mysql8/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.22
(2)远程连接报错
远程连接MySQL8.0报错,我们需要修改配置
MySQL8.0之前的版本密码加密规则:mysql_native_password
MySQL8.0密码加密规则:caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
再次设置密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql更新到8.0之后,使用Navicat和SQLyog链接时都会出错,是因为MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,即可登陆成功。
(3)group by 语句报错
接下来,发现项目中使用 group by 报错,我们继续修改配置,/etc/mysql/my.cnf,在最后增加一行配置
docker exec -it mysql8 /bin/bash
进入容器后,没有vim命令,装一下
apt-get update
apt-get install vim
vi /etc/mysql/my.cnf
在[mysqld]下增加配置
sql_mode ='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
重启OK
docker restart mysql8