-- 其他各种设置

-- 其他各种设置

我已经在 HAProxy 上运行了VIP:192.168.61.32,并且我已经检查过netstat -tulnp|grep 3306

 tcp        0      0 192.168.61.32:3306      0.0.0.0:*               LISTEN      7895/haproxy 

但是当我跑步时mysql -h 192.168.61.32 -u root -p

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

我的后端 Mysql 节点位于192.168.61.33 & 192.168.61.34,我可以使用以下方式直接连接到它们 mysql -h 192.168.61.33 -u root -p

 mysql -h 192.168.61.34 -u root -p

答案1

您可能需要检查 haproxy 和 mysql 之间是否存在连接错误。如果您运行systemctl status haproxytail /var/log/haproxy-traffic.log,您可能会发现类似下面的错误

服务器 mysql_farm/galera03 已关闭,原因:Layer7 状态错误,代码:0,信息:“主机‘xx.xx.xx.xx’由于许多连接错误而被阻止;使用‘mysqladmin flush-hosts’解除阻止”,检查时长:0ms。剩余 2 个活动服务器和 0 个备份服务器。0 个会话处于活动状态,0 个重新排队,0 个剩余在队列中。t

在这种情况下,您需要运行命令mysqladmin flush-hosts从 mysqld 中清除被阻止的 IP,以便 haproxy 可以再次连接。

您可能需要运行以下命令mysqladmin -uroot -p flush-hosts

有关如何解决错误的更多参考,请参阅下面的文档。 https://dev.mysql.com/doc/refman/5.7/en/host-cache.html#blocked-host

答案2

我认为您可以重新检查 bind-address 并编辑全局 my.ini 文件的 [mysqld] 部分:

[mysqld]

-- 其他各种设置

port = 3306
bind-address = 127.0.0.1

保存此文件,然后使用命令重新启动服务 mysql:

service mysql restart

编辑

要授予用户从远程 IP 的访问权限,请在以 MySQL 根用户身份登录时从 mysql> shell 运行以下命令:

GRANT ALL on somedb.* to [email protected] identified by 'somepassword';

如果你想授予来自任何远程 IP 的某些用户的访问权限:

GRANT ALL on somedb.* to someuser@% identified by 'somepassword';

完成这些步骤后,请确保重新启动 MySQL 服务器,以便它读取配置中的更改。

相关内容