背景:
学习mysql数据库的时候,用maxscale做数据读写分离。
192.168.4.53 主服务器
192.168.4.54 maxscale服务器
192.168.4.55 从服务器
主从同步,maxscale的配置都配置好了。
主库授权: GRANT ALL ON . TO 'zs'@'192.168.4.54' identified by '123456';
现象:
mysql -uzs -p123456 -h192.168.4.53
mysql -uzs -p123456 -h192.168.4.55
maxscale服务器,直接连主服务器,从服务器都没有问题。
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'zs'@'::ffff:192.168.4.54' (using password: YES)
maxscale服务器,通过maxscale代理,连接后端服务器则会报错,从报错信息来看ipv4地址转为了ipv6映射,导致没有匹配的访问规则,访问被拒绝。
主库添加访问规则:
grant all on . to zs@'::ffff:192.168.4.54' identified by '123456';
然后maxscale通过maxscale代理就可以正常连接后端数据库了。
问题:
如何配置maxscale以阻止ipv4地址自动转为ipv6地址映射
经测试,在[Read-Write Listener]部分,添加
address=192.168.4.54
通过显式设置address参数为IPv4地址,可以确保MaxScale仅监听指定的IPv4地址,并避免IPv4地址转换为IPv6映射的情况。
在MaxScale的配置文件中,可以添加以下配置来阻止IPv4地址自动转换为IPv6地址映射:
[MaxScale]
...
# 禁止IPv4地址自动转换为IPv6地址映射
enable_ipv4 = false
#将上述配置添加到MaxScale的配置文件(通常是maxscale.cnf)中,并重新启动MaxScale即可。这将禁用IPv4地址自动转换为IPv6地址映射,从而解决问题。
#如有帮助,恭请采纳
address_ipv6=false
这将告诉MaxScale不要将IPv4地址转换为IPv6地址。参考gpt:
要配置MaxScale以阻止IPv4地址自动转换为IPv6地址映射,你可以采取以下步骤:
1.打开MaxScale的配置文件。通常,配置文件位于/etc/maxscale.cnf或/etc/maxscale/maxscale.cnf。
2.在配置文件中找到名为 [address translation] 的部分,如果该部分不存在,则创建一个新的部分。
3.在 [address translation] 部分中,添加以下行:
address_translation=disable_ipv6
4.保存并关闭配置文件。
5.重新启动MaxScale服务,以使配置更改生效。
现在,MaxScale将不会自动将IPv4地址转换为IPv6地址映射,并且应该能够正确匹配访问规则,从而防止访问被拒绝的问题。
请注意,确保你的操作系统和网络环境已正确配置以支持IPv4,并且没有其他因素导致IPv4地址被自动转换为IPv6地址映射。