我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,發現已經可以正常連接