docker安装mysql

查看mysql已有镜像

docker search mysql //查看mysql已有镜像,然后它会给大家展示一大堆,这里我就不给大家截图了

 拉取mysql镜像

这里安装5.7版本

docker pull mysql:5.7 //安装mysql5.7

启动容器

记得关闭防火墙,或者开放3306端口。

docker run -it --rm --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7 --lower_case_table_names=1  //docker安装mysql忽略大小写

这样docker安装mysql就完成了。

Navicat连接数据库

情况一

docker 不能pull docker 不能连接数据库_docker 不能pull

情况二

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

//这种错误,我百度得到的解释是MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

第二种错误大部分要求你修改my.cnf配置文件,添加如下内容。

[mysqld] 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我试了但是并没有生效。

解决

docker ps //查看正在运行的容器

如上图所示,

我们进入到容器中

docker exec -it 4730106799e3 bash  //注意使用容器id,而不是容器名称,网上很多都是容器名称,我这里使用容器名称是不成功的。
mysql -uroot -p123456 //登录mysql
mysql> ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  
Query OK, 0 rows affected (0.01 sec)  
mysql>   
mysql> FLUSH PRIVILEGES;  
Query OK, 0 rows affected (0.01 sec)  
 
//运行如上内容,调整权限

mysql> quit //退出mysql
root@4730106799e3:/# exit //退出容器
docker restart 4730106799e3 //重新启动容器

第二个问题解决

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 

在执行sql的时候 报了这个错,数据库是mysql 5.7 版本的存放在docker中,

先说下错误的原因是因为mysql 默认是设置了groupby 全规则。所以必须得修改它设置为

docker 不能pull docker 不能连接数据库_docker_02

  为此我们先进去docker mysql容器,
    docker ps 查看容器
    docker exec -it ${你的mysql容器id} /bin/bash 进入mysql容器
    cat /etc/mysql/my.cnf 进入配置文件夹
    vim /etc/mysql/mysql.conf.d/mysqld.cnf  以编辑的形式打开配置文件
    (如果vim 报错则安装vim,安装的方式和linux 系统一样)
    然后在[mysqlid]最后一条加入上面图片中的配置就OK 然后重启容器
 

容器中使用vim

    docker中使用vim