具有 mysql-check 选项的 HAProxy,不工作

HAProxy with mysql-check option, not working

我在我的 HAProxy 连接中添加了一个条目以连接到 MySQL 数据库。目前只读,不写。

我设置如下:

frontend db_read_port33517
mode    tcp
option  tcplog
bind *:33517
default_backend db_slave_con

backend db_slave_con
option  mysql-check user haproxy post-41

   server database1   1.2.3.4:3307 check port 3307
   server database2   1.2.3.5:3307 check port 3307 backup

是MySQL5.7,我在MySQL中添加了一个基本用户:

CREATE USER 'haproxy'@'1.0.0.0/255.0.0.0' IDENTIFIED BY 'some_password';

但是查看统计页面,它无法连接到任何一个数据库。这是我第一次使用 mysql-check 选项,但我猜我错过了一些东西,但是看了所有的笔记我看不出它是什么?

n.b。数据库都存在,我可以用 haproxy 用户连接到它们..


查看日志,我发现我得到了 0Access denied for user 'haproxy'@'1.2.3.6'。我已将用户修改为 haproxy@% 但这没有区别。

我猜这是因为用户是使用密码创建的(我们的政策规定所有数据库用户都必须有密码)并且 HAProxy 没有传递密码。有没有办法在 HAProxy 配置中指定密码?

看来我是对的,只要我删除密码,HAProxy 就可以看到数据库。我已经阅读了 HAProxy 的说明,但似乎没有任何方法可以指定密码。

虽然我很欣赏它只使用该用户连接/断开连接,但这似乎仍然是一个安全问题,因为我现在在我的数据库中有一个没有密码的用户。我认为目前我能做的最好的事情就是尽可能严格地锁定用户的 IP 地址。