docker部署mysql后无法连接的解决方式

1、创建实例命令

docker run -id --name=c_mysql -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.37

2、查看启动的实例 docker ps

3、这里映射的是宿主机的3306端口,我已经把端口开放了

4、在宿主机进行连接

#这个报错像是mysql不存在,查看mysql是否启动

#mysql已启动,端口也没有被占用

5、已经在容器里面测试了,mysql可以正常连接;在试试将root用户开放可以任何主机访问

5.1、进入容器,并连接mysql

docker exec -it c_mysql bash
mysql -uroot -p123456

5.2、将root用户开放所有主机可以访问

mysql> grant all privileges on . to root@‘%'; #授权
mysql> flush privileges; #刷新权限表

6、在宿主进再次进行连接测试

#还是不行!!!

7、去百度了一下,觉得是宿主机的路由没有开启,来试试看

#一圈回来,发现问题出在宿主机,因为如果要使用mysql命令,就是必须要/usr/bin/目录下有这个命令。但是我是docker安装mysql所以,宿主机不能使用mysql连接docker的数据库,使用远程工具navicat连接时报的错,应该是root用户没有开启,任何主机可以访问的权限。由于上面已经开了,我现在测试navicat是可以远程连接的

8、上面说到了一个宿主机路由的问题,我们路由没开的话就会导致宿主机于容器实例网络隔绝,所以是要打开的。

8.1、查看路由是否打开

sysctl net.ipv4.ip_forward

#返回值为1代表路由已开启,为0就是未开启

8.2、开启路由

echo “net.ipv4.ip_forward = 1” >>/etc/sysctl.conf #将命令写入到/etc/sysctl.conf文件中
sysctl -p #加载内核
sysctl net.ipv4.ip_forward #再次查看路由是否开启

补充:Docker里的Mysql无法连接,连接一段时间超时。ERROR 2013 (HY000): Lost connection to MySQL server at

尝试使用命令行连接

mysql -h xxx.xxx.xxx.xxx -P 3306 -u root -p 123456

如果报错:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 "Internal error/check (Not system error)"

请重启docker服务

然后再次启动容器

如果不是这种报错,请检查Mysql版本,如果为8.0及以上版本;需要注意,该版本密码认证机制已经升级,有些客户端未能兼容,请使用新的认证方式修改Mysql密码

还有就是,所登录的用户是否允许任意主机连接

use mysql;
select user,host from user;

仅允许本地连接:root@localhost

允许任意连接:root@%

如果发现为:root@localhost

不要直接修改此表

可以新建一个用户,并赋予权限

#Mysql8.0:

#添加远程登录用户
CREATE USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'passwd!';

#赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';

总结

到此这篇关于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 并实现远程连接教程

    拉取镜像 docker pull mysql 查看拉取完成的镜像 docker images 通过镜像创建并启动一个MySQL容器 docker run --name mysql_dev -e MYSQL_ROOT_PASSWORD=123456 -p 3333:3306 -d mysql –name:给新创建的容器命名,此处命名为 mysql_dev -e:配置信息,此处配置mysql的root用户的登陆密码 -p:端口映射,此处映射主机3333端口到容器mysql_dev的3306端口 -d

  • docker部署mysql 实现远程连接的示例代码

    1.docker search mysql   查看mysql版本 2.docker pull mysql  要选择starts最高的那个name 进行下载 3.docker images  查看下载好的镜像 4.启动mysql实例 docker run --name dockermysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql  --name 为mysql的实例设置别名. -p 3307为对外暴露的端口.3306是内

  • docker部署mysql8并设置可远程连接

    docker部署mysql的关键在于两点 1.mysql在生产环境产生的数据放在容器里很不安全,我们需要把数据文件夹挂载到容器外,以防数据丢失. 2.运行mysql镜像时需要设置初始密码,并且设置mysql可以远程连接. 接下来我们开始docker部署mysql 首先我们先搜索一下mysql镜像: docker search mysql 列出很多mysql的镜像,我们选择第一个 我们用docker把mysql镜像拉下来 docker pull mysql docker运行mysql镜像 dock

  • Docker部署mysql远程连接 解决2003的问题

    连接MySQL 这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙. 开放端口 firewall-cmd --add-port=3306/tcp --permanent // --permanent 永久生效,没有此参数重启后失效 firewall-cmd --reload // 重新载入 关闭防火墙 systemctl stop firewalld systemctl enable iptables // 设置开机启动 firewall-cmd --reload

  • docker部署mysql后无法连接的解决方式

    1.创建实例命令 docker run -id --name=c_mysql -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.37 2.查看启动的实例 docker ps 3.这里映射的是宿主机的3306端口,我已经把端口开放了 4.在宿主机进行连接 #这个报错像是mysql不存在,查看mysql是否启动 #mysql已启动,端口也没有被占用 5.已经在容器里面测试

  • 完美解决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连接问题及遇到的坑

    发现windows上有一个docker descktop(虽然不怎么好用), 安装之后准备直接用docker搭本地测试环境的基础设施(比如MySQL,Redis,MongoDB,ES啥的), 虽然比去到处找安装包安装来的好, 不过这样就体会不到自己装软件的乐趣了(滑稽.jpg) 首先是安装MySQL, 遇到了几个问题, 记录下 mysql镜像用的是最新版的, docker search mysql可以看大很多版本的, 我用的是第一个使用量最多那个(稳妥) 1.启动时未指定相关环境变量 docke

  • docker部署MySQL时无法启动问题的解决方法

    目录 一.安装环境 ubuntu18 + docker 二.遇到无法启动的问题时,查看日志发现的错误 总结 一.安装环境 ubuntu18 + docker docker run -itd --name mysql-server -v /home/docker/share/mysql-server/log/:/var/log:rw -v /home/docker/share/mysql-server/data/:/var/lib/mysql:rw -v /home/docker/share/my

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • Docker部署MySQL并实现客户端连接

    准备工作 在docker内部署任何应用,都需要先下载对应的镜像:下载镜像之前,需要先搜索镜像来确认该镜像是否存在: docker search mysql 从列表可以看到,docker已经有了mysql的镜像,名称是“mysql”,接下来下载镜像: docker pull mysql 下载完成后,查看一下本地镜像: 如果在列表中看到mysql,镜像下载就已经成功了. 容器设置 在docker中,真正运行的是容器,镜像在我理解中是一种环境.我们在指定的镜像中运行某个容器,然后编辑和配置这个容器,从

  • docker 部署mysql详细过程(docker部署常见应用)

    之前给大家介绍过:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql:5.7.26 # 查看镜像 docker images|grep mysql # 启动容器镜像,建议在/usr/local/workspace/mysql 下执行以下docker run 命令   docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v

  • springboot多数据源配合docker部署mysql主从实现读写分离效果

    目录 一.使用docker部署mysql主从 实现主从复制 二.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是windows版本docker,mysql版本是5.7 1.使用docker获取mysql镜像 docker pull mysql:5.7.23 #拉取镜像文件 docker images #查看镜像文件 2.使用docker运行mysql master docker run --name mysql-master

随机推荐