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

如何让所有数据库用户(新老)通过MaxScale代理连接以统一应用数据掩码规则

解决MaxScale数据掩码规则未全局生效的问题

核心思路

要让所有用户的查询都触发MaxScale的数据掩码规则,必须切断用户直接连接MariaDB服务器的路径,只允许MaxScale账户直接访问数据库,其他业务用户只能通过MaxScale的代理端口连接。

1. 修改MariaDB监听地址

  • 找到MariaDB的配置文件(常见路径:/etc/my.cnf 或 /etc/mysql/mariadb.conf.d/50-server.cnf)
  • 将bind-address设置为仅允许MaxScale访问的地址:
    • 如果MaxScale和MariaDB在同一台机器,设为本地回环地址:
      bind-address = 127.0.0.1
      
    • 如果MaxScale在另一台服务器,设为MaxScale的IP:
      bind-address = <MaxScale服务器IP>
      
  • 重启MariaDB服务生效:
    systemctl restart mariadb
    

2. 限制业务用户的连接权限

  • 登录MariaDB服务器,修改所有业务用户的连接来源,让他们只能从MaxScale的IP访问:
    -- 替换otheruser为实际业务用户名,<MaxScale服务器IP>为真实IP
    UPDATE mysql.user SET host = '<MaxScale服务器IP>' WHERE user = 'otheruser';
    -- 刷新权限
    FLUSH PRIVILEGES;
    
    这样业务用户直接连MariaDB会被拒绝,只能通过MaxScale中转。

3. 配置MaxScale对外监听端口

  • 打开MaxScale的配置文件(通常是/etc/maxscale.cnf),确保服务监听端口对外可访问,示例配置:
    [Read-Write-Service]
    type=service
    router=readwritesplit
    servers=server1
    user=maxscaleuser
    password=你的MaxScale账户密码
    
    [Read-Write-Listener]
    type=listener
    service=Read-Write-Service
    protocol=MariaDBClient
    port=3306  -- 这个是对外提供的代理端口,业务用户连这个
    
  • 重启MaxScale服务:
    systemctl restart maxscale
    

4. 验证配置

  • 测试直接连MariaDB:mysql -u otheruser -p -h <MariaDB服务器IP> -P 3306,应该连接失败。
  • 测试连MaxScale代理:mysql -u otheruser -p -h <MaxScale服务器IP> -P 3306,连接成功后查询敏感数据,确认掩码规则生效。

内容的提问来源于stack exchange,提问作者Ri Hem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:53:11