Error connecting to master ‘slave@192.168.200.128:3307‘ - retry-time: 30 retries: 1

简介: Error connecting to master ‘slave@192.168.200.128:3307‘ - retry-time: 30 retries: 1

前言


很开心这个问题今天终于被我解决掉了,一直从2022年暑假中期持续到现在每天都在想着这个事情,问题出发点还得从暑假学Dcoker说起,在学习Docker基础的时候很顺利用了不到一周时间,当用Docker搭建一些基础的服务器环境时遇到了麻烦,期间抽出过一天专门解决这个问题但是没有解决掉,对自己很是打击。说到底是一个小问题说到底也是个大问题,可以体现出自己的基础很不牢固。今天我将细细说一下为什么会有这种问题,刚开始为什么解决不掉,是对自己的成长的一次记录,也希望在大家遇到困难的时候能够帮助到大家。


9b9c9f9b25da47b0b25a4a9a34751ce9.jpg

问题描述


b78971db13be465a9b9ca5a0bfb6732f.png


测试自己遇到的是哪一种类型


用户权限不够


主数据库中创建并授权的用户应该可以在任何主机访问主数据库,或者说在指定节点可以访问主数据库,可以先在另一台主机上登录授权的账号,检测能不能登上以及权限是不是正常。我这里用的是SQLyog(我的账号授权是正常的)


3d719911c3b54c87ac5b489da865a08d.png


看错误状态码


在问候了百度很多次,自己的问题依然没有得到解决时可以看看自己的错误状态码,因为不同的错误状态码可能对应的报错信息一样(难以辨别),但解决方法千差万别,错误状态码在下图所示位置,根据自己的状态码检索解决方案。


bad706fab47b48af95934240643cf5e5.png


查看错误日志


这种方案应该是最为稳妥的,可以从错误日志中清楚地发现是什么错误。博主能力有限没能将数据库错误日志玩明白,只是进行了一些探索,现在将探索进度给大家。


错误日志存放的位置

网上有一部分解释是说放在了data目录下的.err文件

有的说是在var/log/mysqld.log内

我在docker中查看半天没有找到。。。。。。如果哪个大佬知道在哪可以给我分享一下


现在我将如何操作容器内部数据文件的指令分享给大家大家自己探索

查看有哪些容器


docker ps


根据容器id查看该容器根目录下有哪些目录(查看更多只用拼接目录路径即可)


docker exec 容器id ls -a /


查看文件详细信息


docker exec 容器id ls -al /


查看文件内容

docker exec 容器id cat 路径/文件名
• 1


想要拷贝某个文件目录或者文件,用下面的命令


docker cp 容器id:/要拷贝的文件目录  /目的地
• 1


解决方案


权限不够,重新授权


--授权操作
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'slave'@'%' identified by '123456';
--刷新权限
flush privileges;


解释


set global validate_password_policy=0; 这个命令将密码设置为最低级别的,Mysql的密码级别有三种,0级别,1级别,2级别 0级别允许是纯数字,1级别必须包含数字和字母,2级别必须数字,大小写字母都包含。


set global validate_password_length=1;密码长度最短可为1


grant replication slave on . to ‘slave’@‘%’ identified by ‘123456’;赋予用户主从复制权限,在任何主机均可访问,用户名为slave密码为123456


错误状态码2003,关闭主机防火墙


用户赋予权限没有错误的话大概率是这里出问题了,看一下自己的报错码是不是2003,如果是的话可以按照这个方法解决slave_IO_Running: Connecting and Last_IO_Errno: 2003


解决方案:


service iptables stop


如果执行之后报错如下图请继续往下看


452887fe14894fceaa7121e400b147ee.png


原因可能是:


centos 7.0以下基于iptables

CentOS 7.0默认使用的是firewall作为防火墙(须执行下面的语句1,语句2根据自己的需求执行)

语句1、直接关闭防火墙


systemctl stop firewalld.service


语句2、禁止firewall开机启动


systemctl disable firewalld.service



通过以上两个方法大概可以解决80%以上的该类型问题了。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1748 0
|
Ubuntu Linux
ubuntu使用小技巧 -- 设置rclocal开机启动
CentOS下可以通过编辑/etc/rc.local文件,加入一些开机启动项,ubuntu下怎么设置呢?
|
Kubernetes 网络安全 网络架构
Docker不同宿主机网络打通
【8月更文挑战第20天】在不同宿主机上打通Docker网络可通过多种方法:1) 使用Docker原生的Overlay或Macvlan网络驱动实现跨主机通信,如Overlay网络利用VXLAN技术连接多台宿主机,Macvlan则让容器直接接入物理网络;2) 利用第三方工具如Weave Net或Flannel构建虚拟网络,Weave Net简化网络配置,Flannel则适用于Kubernetes环境并通过UDP封装数据包实现通信。实施前需确保宿主机间网络畅通且防火墙设置适当。
617 2
|
关系型数据库 MySQL
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
MySQL主从异常Coordinator stopped because there were error(s) in the worker(s). The most recent failur
5576 0
|
网络协议 关系型数据库 MySQL
MySQL报ERROR 2002 (HY000)解决
通过上述步骤,可以有效地解决MySQL连接时出现的 `ERROR 2002 (HY000)`错误。这些步骤包括检查和启动MySQL服务、配置文件检查、套接字文件检查、日志文件分析、进程检查、防火墙设置、客户端配置和最终的MySQL重装。确保每个步骤都按顺序执行,有助于快速定位和解决问题,使MySQL服务器恢复正常运行。
9268 0
|
监控 JavaScript
成功解决:[‘‘, ‘‘, __ob__: Observer]
这篇文章介绍了Vue框架中数组出现`__ob__: Observer`属性的原因和解决方法,说明了Vue如何通过观察者模式实现数据与视图的双向绑定,并提供了如何避免数组被Vue接管导致无法取值的解决方案。
成功解决:[‘‘, ‘‘, __ob__: Observer]
|
消息中间件 Kafka Linux
安装Kafka3.0
消息队列是当前分布式系统中不可或缺的一部分了,今天先简单学习一下安装吧。
568 0
|
SQL Java 数据库连接
Hibernate 和 JPA 有什么区别?
【8月更文挑战第21天】
979 0
|
jenkins 持续交付
Jenkins手动安装指定版本的插件
Jenkins手动安装指定版本的插件
1642 0