我已在 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';
但是查看统计页面,它无法连接到任一数据库。这是我第一次使用 mysql-check
选项,但我猜我错过了一些东西,但浏览完所有注释后我看不出它是什么?
n.b.数据库都存在,我可以使用 haproxy
用户连接到它们..
查看日志,我可以看到0用户'haproxy'@'1.2.3.6'的访问被拒绝
。我已将用户修改为 haproxy@%
但这没有什么区别。
我猜测这是因为用户是使用密码创建的(我们的策略规定所有数据库用户都必须有密码)并且 HAProxy 没有传递密码。有没有办法在 HAProxy 配置中指定密码?
最佳答案
看来我是对的,只要我删除密码,HAProxy就可以看到数据库。我已经浏览了 HAProxy 的注释,似乎没有任何方法可以指定密码。
虽然我很欣赏它只使用该用户来连接/断开连接,但这似乎仍然是一个安全问题,因为我现在的数据库中有一个没有密码的用户。我认为目前我能做的最好的事情就是尽可能严格地锁定用户的 IP 地址。
关于mysql - HAProxy 带有 mysql-check 选项,不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57786879/