远程连接Docker上的Mysql失败的分析与解决方案

之前VMWare虚拟机CentOS7使用DHCP,导致只要重启操作系统,网卡IP地址就改变。于是把网卡修改为手工设定IP地址,结果导致远程连接mysql出现如下错误,花了很多时间还没有解决,最终偶然想到Docker被外部请求访问可能有中转行为才得到解决。

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.101.26' (10060)

附上网卡配置文件修改指令:

cd /etc/sysconfig/system-scripts

vim ifcfg-ens33

以及网卡配置文件ifcfg-ens33内容:

解决方案:

(1)刚开始,我判断可能是防火墙没有开启端口3306

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

firewall-cmd --query-port=3306/tcp

但是远程连接还是存在同样的连接问题。

(2)于是判断mysql服务没有被防火墙允许,执行:

firewall-cmd --add-service=mysql

firewall-cmd --reload

firewall-cmd --query-service=mysql

但是远程连接还是存在同样的连接问题。

(3)于是判断docker没有被防火墙允许,但是提示如下错误:

Error: INVALID_SERVICE: docker

(4)到这里卡住了。Docker被外部请求访问,应该有一系列IP包转发行为,求助网络,有人认为防火墙默认不允许NAT转发,所以才导致很多问题产生。于是执行如下指令:

firewall-cmd --zone=public --add-masquerade --permanent

firewall-cmd --permanent --zone=trusted --change-interface=docker0

firewall-cmd --reload

systemctl restart docker

docker start 66bebcd41183

到此这篇关于远程连接Docker上的Mysql失败的分析与解决方案的文章就介绍到这了,更多相关远程连接Docker上的Mysql失败内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 连接docker里面的mysql失败解决方法

    场景:在虚拟机的docker容器中安装latest版本的mysql之后,在宿主机中使用navicat连接虚拟机中的mysql出现下图报错: 2059 : Authentication plugin 'caching_sha2_password' cannot be loaded: 解决办法: 1.首先docker ps命令查看正在运行的容器,确保我们想要连接的mysql已经启动,如果没启动使用docker start命令启动(下图查看结果表示已经启动了一个mysql) 2.接着运行docker

  • docker中使用mysql数据库详解(在局域网访问)

    前言 开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在CentOS Linux release 7.2.1511 (Core) 上测试完成 假设,你已经安装好docker.如果没有安装好docker可以参考centos7上安装docker 使用 docker pull mysql 获得mysql镜像,接着使用 docker images 查看镜像

  • Docker安装MySQL8.0的实现方法

    环境:MacOS_Cetalina_10.15.1.Mysql8.0.18.Docker_2.0.0.3 1.docker仓库搜索mysql docker search mysql 2.docker仓库拉取mysql8.0 docker pull mysql:8.0 备注: docker pull mysql //默认拉取最新版本 3.查看本地仓库镜像是否下载成功 docker images mysql:8.0 4.安装运行mysql8.0容器 docker run -p 3307:3306 -

  • docker中mysql初始化及启动失败问题解决方案

    最近做项目,遇到这样问题,docker 中的mysql 不能启动,经过上网查资料,终于解决了这个问题,这里记录下,也许还能帮助到大家, 在docker中有一个mysql服务,其数据文件是挂在在主机外面的文件,在docker中的root有访问该数据文件的权限,但是docker中mysql访问数据文件的时候提示权限不足,于是只有以root用户来启动mysql了. 数据初始化: mysql_install_db --user=root --explicit_defaults_for_timestamp

  • 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置

    本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile和shell脚本实现这一过程. 搭建步骤 1.首先创建Dckerfile: FROM mysql:5.7 #设置免密登录 ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #将所需文件放到容器中 COPY setup.sh /mysql/setup.sh COPY sch

  • docker下修改mysql配置文件的方法

    由于需要修改mysql的sql_mode,在命令行修改每次重启都会失效,因为修改docker下mysql的配置文件. 操作系统:centos7 docker版本:Docker version 17.05.0-ce, build 89658be mysql版本:5.7.18 1.拉取镜像 docker pull mysql:5.7.18 2.列出镜像 [root@zk01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.

  • Docker中部署mysql服务的方法及遇到的坑

    最近一直在学习搬运工,感觉这么厉害的东西怎么以前不知道呢,把自己捣鼓的过程整理记录下来,供同学们参考 第零步:从Docker Hub拉取官方mysql镜像 docker pull mysql 然后就是进入漫长的等待,当然如果你配置了镜像加速器,速度会快那么一丢丢 第一步:使用docker images命令查看镜像 你会看到我们这里已经有了MySQL的的镜像 第二步:启动我们的mysql的镜像,创建一个MySQL的容器 使用命令:docker run -d --name mysql -p 3307

  • 浅析docker-compose部署mysql无法访问的问题

    什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器. Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用

  • 完美解决docker安装mysql后Navicat连接不上的问题

    一.docker拉取镜像 docker pull mysql (默认拉取最新版本的) 二.运行mysql docker run -p 3308:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql 容器名:mysql 密码:123456 三.查看是否运行 docker ps -a 四.查看启动日志 docker logs mysql mysql就是刚刚启动的容器名,确认mysql启动是正常的 五.错误 当我用Navicat进行链接的时候

  • 远程连接Docker上的Mysql失败的分析与解决方案

    之前VMWare虚拟机CentOS7使用DHCP,导致只要重启操作系统,网卡IP地址就改变.于是把网卡修改为手工设定IP地址,结果导致远程连接mysql出现如下错误,花了很多时间还没有解决,最终偶然想到Docker被外部请求访问可能有中转行为才得到解决. ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.101.26' (10060) 附上网卡配置文件修改指令: cd /etc/sysconfig/system-scrip

  • docker上部署MySQL的示例

    容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧. 1 容器云是什么? 要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比. 虚拟机: VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运

  • 使用TLS加密通讯远程连接Docker的示例详解

    默认情况下,Docker 通过非联网 UNIX 套接字运行.它还可以使用 HTTP 套接字进行可选通信. 如果需要以安全的方式通过网络访问 Docker,可以通过指定标志将 Docker 标志指向受信任的 CA 证书来启用 TLS. 在守护程序模式下,它只允许来自由该 CA 签名的证书验证的客户端的连接.在客户端模式下,它仅连接到具有该 CA 签名的证书的服务器. # 创建CA证书目录 [root@localhost ~]# mkdir tls [root@localhost ~]# cd tl

  • redis远程连接不上的解决办法

    目录 问题描述: 如图所示: 解决步骤: 步骤一:注释掉redis.window.conf文件中的bind属性设置. 步骤二:把protected-mode属性设置no 问题描述: redis远程服务端运行在192.168.3.90计算机上,客户端计算机(ip:192.168.3.110)通过redsi-cli.exe客户端工具连接时,没有反应,连接不上. 如图所示: 解决步骤: 步骤一:注释掉redis.window.conf文件中的bind属性设置. 如图所示: 步骤二:把protected

  • Redis配置外网可访问(redis远程连接不上)的方法

    默认情况下,当我们在部署了redis服务之后,redis本身默认只允许本地访问.Redis服务端只允许它所在服务器上的客户端访问,如果Redis服务端和Redis客户端不在同一个机器上,就要进行配置. 使用redis报错 例如使用redis的PHP代码: <?php $redis = new Redis(); $redis->connect('192.168.1.4', 6379); $redis->set('tag', 'hello'); echo 'name:', $redis-&g

  • vue项目在线上服务器访问失败原因分析

    珊妹儿遇到一个奇葩问题哈,跟大家伙来分享分享,首先因为刚接手的项目,我还没有线上服务器的连接信息,前端代码都是我打包好给别人,别人传到服务器的,传到线上服务器访问不了,这就是中间出现了问题. 所谓,打包就是压缩的概念,而压缩文件再次压缩就会导致文件成倍的增大,这中间就出现了很多问题,我们排除了很多问题都没找见原因,后来我就寻思拿U盘拷一份再试试,结果成功了!!!!! 据珊妹儿多年经验来分析,用U盘直接拷贝的是源文件,而压缩完传过去的压缩包再解压缩,就不是原来的文件了!嗯 应该是这个原因.....

  • VS Code安装go插件失败原因分析以及解决方案

    目录 问题背景 问题原因 解决方案 方案1:快速方案 方案2:环境变量中配置 方案3:vscode中配置 总结 问题背景 VSCode是我们开发go程序的常用工具,但是安装VSCode成功后,创建一个.go文件会有如下提示: 这个是vscode提示你需要安装go插件,但是当你点击install all进行安装时,发现会安装失败. Installing 8 tools at D:\pragrams\go\bin  gocode  gopkgs  go-outline  go-symbols  dl

  • MySQL远程连接不上的解决方法

    之前遇到过MySQL本地可以连接但是远程连不上的问题,没有记录,今天在云上新申请的服务器上又遇到这个问题,记录一下解决过程. 1.排除网络或防火墙问题 先看是否能ping通远程服务器,ping 192.168.1.211,如果不可以就是网络问题.然后,检查端口是否被防火墙挡住了,telnet 192.168.1.211 3306,如果连接失败,配置防火墙. 配置防火墙,开启3306端口 vi /etc/sysconfig/iptables -A INPUT -m state –state NEW

  • sql server连接不上怎么办 SQL Server2008R无法登录的解决方案(1814\18456)

    早上一开电脑,黑屏幕跑一些修复系统的代码....进入系统后,sql server连接不上 正文 原因:sql server的服务自动关闭了,并且启动失败 windows日志信息:传递给数据库 'master' 中的日志扫描操作的日志扫描号 (286:456:1) 无效.此错误可能指示数据损坏,或者日志文件(.ldf)与数据文件(.mdf)不匹配.如果此错误是在复制期间出现的,请重新创建发布.否则,如果该问题导致启动期间出错,请从备份还原. 很明显是sqlserver的系统文件出了问题,先百度,网

随机推荐