You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MaxScale连接MariaDB遇超时及权限拒绝问题求助

解决MaxScale连接MariaDB的替代方法及问题排查

一、集群内可用的替代连接方式

1. 直接通过MaxScale Pod IP连接

先获取MaxScale Pod的IP:

kubectl get pods mariadb-galera-maxscale-0 -o jsonpath='{.status.podIP}'

替换<POD_IP>后执行连接命令:

kubectl run mariadb --rm -it --image=mariadb:10.6 -- bash -c "mariadb -h <POD_IP> -P3306 -u mariadb -p'xxxxxxx'"

2. 创建临时ClusterIP服务(绕过MetalLB问题)

当前LoadBalancer服务因MetalLB配置错误无法分配IP,可临时创建ClusterIP服务指向MaxScale:

apiVersion: v1
kind: Service
metadata:
  name: maxscale-clusterip
  namespace: default
spec:
  selector:
    app.kubernetes.io/instance: mariadb-galera-maxscale
    app.kubernetes.io/name: maxscale
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306

执行kubectl apply -f <上述文件名>后,用新服务名连接:

kubectl run mariadb --rm -it --image=mariadb:10.6 -- bash -c "mariadb -h maxscale-clusterip.default.svc.cluster.local -P3306 -u mariadb -p'xxxxxxx'"

3. 本地端口转发临时连接

如果需要从集群外部/本地调试,用端口转发暴露MaxScale端口:

kubectl port-forward pod/mariadb-galera-maxscale-0 3306:3306

保持窗口打开,在本地终端执行连接:

mariadb -h 127.0.0.1 -P3306 -u mariadb -p'xxxxxxx'

二、根源问题排查与修复

1. 修复MetalLB IP分配错误

从kubectl describe svc的警告可知,指定的172.18.0.229不在MetalLB的可用IP池范围内,需:

  • 修改MetalLB配置,将172.18.0.229加入允许的IP池
  • 或删除服务的metallb.universe.tf/loadBalancerIPs注释,让MetalLB自动分配可用IP

2. 解决MaxScale代理的权限问题

Pod日志的Access denied提示需检查两点:

  • 在MariaDB后端节点执行,授予用户跨网段连接权限:
    GRANT ALL PRIVILEGES ON *.* TO 'mariadb'@'10.244.%' IDENTIFIED BY 'xxxxxxx';
    FLUSH PRIVILEGES;
    
  • 检查MaxScale配置,确认readwritesplit等服务正确指向后端MariaDB节点,且代理规则未拦截用户认证

内容的提问来源于stack exchange,提问作者Saurav K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:03:23