如何让所有数据库用户(新老)通过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>
- 如果MaxScale和MariaDB在同一台机器,设为本地回环地址:
- 重启MariaDB服务生效:
systemctl restart mariadb
2. 限制业务用户的连接权限
- 登录MariaDB服务器,修改所有业务用户的连接来源,让他们只能从MaxScale的IP访问:
这样业务用户直接连MariaDB会被拒绝,只能通过MaxScale中转。-- 替换otheruser为实际业务用户名,<MaxScale服务器IP>为真实IP UPDATE mysql.user SET host = '<MaxScale服务器IP>' WHERE user = 'otheruser'; -- 刷新权限 FLUSH PRIVILEGES;
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
相关产品推荐
相关产品推荐

