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

时间:2019-09-04 10:52:36

标签: mysql haproxy

我已在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

它是MySQL 5.7,并且我已经向MySQL添加了一个基本用户:

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

但是在stats页面上,它无法连接到任何一个数据库。这是我第一次使用mysql-check选项,但是我想我已经错过了一些东西,但是通过所有笔记,我看不到它是什么?

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


查看日志,可以看到我正在0Access denied for user 'haproxy'@'1.2.3.6'。我已将用户修改为haproxy@%,但这没有区别。

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

1 个答案:

答案 0 :(得分:0)

似乎我是对的,删除密码后,HAProxy便可以看到数据库。我已经阅读了HAProxy的注释,并且似乎没有任何方法可以指定密码。

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