代码改变世界

navicat突然连接不上远程linux服务器上的mysql

2020-05-14 08:12  话猫  阅读(933)  评论(0编辑  收藏  举报

我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,发现已经可以正常连接