如何使用 Maxscale 设置 MySQL 用户
How to setup MySQL users with Maxscale
我正在设置一个带有 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.%'
无法验证?
如果您想从本地主机访问(即 127.0.0.1
),您要么需要两个独立的用户('user'@'127.0.0.1'
和 'user'@'10.1.0.%'
),要么需要一个涵盖他们两者的授权( 'user'@'%'
)。更详细的描述可以在 MaxScale tutorial.
中找到
您可以使用 MariaDB 中的 proxy_protocol
feature in MaxScale. This would allow you to define users only once with the exact IP address they come from and let the proxy-protocol-networks
变量来控制 MaxScale 的身份验证处理,从而大大简化哪些 MaxScale 实例可以充当代理。
错误 'user'@'127.0.0.1'
意味着客户端试图从本地主机连接,即通过连接到环回地址。 10.1.0.%
主机未涵盖此内容,主机解释了失败的原因。
将用户转换为 'user'@'127.0.0.1'
后,客户端和 MaxScale 之间的本地登录有效,但后端服务器拒绝了身份验证,因为 MaxScale 主机不再匹配授权网络 (127.0.0.1
) .
使用 %
主机会导致所有地址匹配,这就解释了解决问题的原因。
我正在设置一个带有 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.%'
无法验证?
如果您想从本地主机访问(即 127.0.0.1
),您要么需要两个独立的用户('user'@'127.0.0.1'
和 'user'@'10.1.0.%'
),要么需要一个涵盖他们两者的授权( 'user'@'%'
)。更详细的描述可以在 MaxScale tutorial.
您可以使用 MariaDB 中的 proxy_protocol
feature in MaxScale. This would allow you to define users only once with the exact IP address they come from and let the proxy-protocol-networks
变量来控制 MaxScale 的身份验证处理,从而大大简化哪些 MaxScale 实例可以充当代理。
错误 'user'@'127.0.0.1'
意味着客户端试图从本地主机连接,即通过连接到环回地址。 10.1.0.%
主机未涵盖此内容,主机解释了失败的原因。
将用户转换为 'user'@'127.0.0.1'
后,客户端和 MaxScale 之间的本地登录有效,但后端服务器拒绝了身份验证,因为 MaxScale 主机不再匹配授权网络 (127.0.0.1
) .
使用 %
主机会导致所有地址匹配,这就解释了解决问题的原因。