我linux服务器上的mysql是docker安装的,突然有一天我的navicat连接不上服务器上的mysql,于是开始了下面一系列的修复
1.首先登录服务器上mysql,看是否能正常登录,我发现不能正常,报[ERROR] unknown variable 'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
进入mysql容器的/etc/mysql/ 目录下 将my.cnf 文件的关于 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
这一行配置注释掉,用#,重启mysql容器,发现在服务器上可以正常登录,但本地navicat仍然连接不上
2.删除mysql容器,用镜像重新创建一个容器,发现报错WARNING: IPv4 forwarding is disabled. Networking will not work.
1)容器创建失败,在宿主机上执行:echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
该操作是在/usr/lib/sysctl.d/00-system.conf文件中添加一行net.ipv4.ip_forward=1
2)重启network和docker服务:systemctl restart network && systemctl restart docker
3)删除失败的mysql容器,再一次创建mysql容器:run -itd --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
3.重新连接mysql,发现已经可以正常连接