1.首先需要有一个MySQL镜像,这里直接使用docker pull拉取
docker pull mysql:5.7.26
随后查看我们刚刚拉取的MySQL,可以看到已经在镜像群里了
2.获取到MySQL镜像之后,接下来就是启动该镜像
docker run -p 3306:3306 --name myMysql -v /usr/local/work/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.26 --lower_case_table_names=1
参数说明:
①-p 端口映射,前面是主机端口,后面是容器内端口
②–name 给容器起个名字
③-v 目录挂载,前面是主机目录,后面是容器目录,为了防止数据丢失,所以把容器内数据挂在到主机上
④-e 初始化MySQL的root密码
⑤–lower_case_table_names=1 让MySQL的表名不再区分大小写
使用命令查看,可以看到MySQL容器已经启动
3.查看主机IP地址
ip addr
ens33后面的ip地址就是虚拟机主机的ip地址
4.尝试连接
可以看到连接成功
5. 当遇到类似这种问题时
Expression #2 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘sss.month_id’ which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
有如下解决方案
在navicat中执行sql语句
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
把sql_mode中的ONLY_FULL_GROUP_BY给去掉
这样在使用group by语句时就不会报错了,改完之后不要重启容器,因为重启容器后前面的更改就又还原了
可以使用下面sql语句查询是否更改,如果没有ONLY_FULL_GROUP_BY则已经更改成功,可以正常查询了
select @@global.sql_mode