0

我正在设置一个带有 2 个前端服务器的 3 个节点(MariaDB 10.4)Galera 集群。

在这些前端服务器中的每一个内部还有一个 Maxscale 6 守护程序。

[listener]
type=listener
service=readwritesplit
protocol=MariaDBClient
address=127.0.0.1
port=3306

所有这些服务器都在10.1.0.0/24网络内。

在 MariaDB,我创建了类似的用户,CREATE USER 'user'@'10.1.0.%'但这些用户无法进行身份验证。

Authentication failed for user 'user'@[127.0.0.1] to service 'readwritesplit'. Originating listener: 'listener'. MariaDB error: 'Access denied for user 'user'@'127.0.0.1' (using password: YES)'.

所以我有RENAME 'user'@'10.1.0.%' TO 'user'@'127.0.0.1'。另一个身份验证错误。

maxscale[1109436]: Authentication to 'node1' failed: 1045, #28000: Access denied for user 'user'@'frontal1' (using password: YES)

我结束了RENAME 'user'@'10.1.0.%' TO 'user'@'%'。当然这里一切都好。

只要所有服务器都在10.1.0.%网络上,为什么用户'user'@'10.1.0.%'无法进行身份验证?

4

1 回答 1

1

如果您想从本地主机(即127.0.0.1)访问,您需要两个单独的用户('user'@'127.0.0.1''user'@'10.1.0.%')或同时覆盖他们的授权('user'@'%')。可以在MaxScale 教程中找到对此的更详细描述。

通过使用 MaxScale 中的功能,您可以显着简化 MaxScale 的身份验证处理proxy_protocol。这将允许您使用他们来自的确切 IP 地址只定义一次用户,并让proxy-protocol-networksMariaDB 中的变量控制允许哪些 MaxScale 实例充当代理。


该错误'user'@'127.0.0.1'意味着客户端试图从本地主机连接,即通过连接到环回地址。主机没有涵盖10.1.0.%这解释了它失败的原因。

将用户转换为 后'user'@'127.0.0.1',客户端和 MaxScale 之间的本地登录有效,但随后后端服务器拒绝了身份验证,因为 MaxScale 主机不再匹配授权的网络 ( 127.0.0.1)。

使用%主机会导致所有地址匹配,这解释了它解决问题的原因。

于 2021-11-16T12:15:12.170 回答