概览
proxy SQL支持不同的验证机制,这取决于客户端到proxy SQL的连接方式以及proxy SQL到后端数据库的连接方式。
前端验证(Clients → ProxySQL)
| Method | Notes |
|---|---|
| mysql_native_password | 所有版本都支持 |
| mysql_clear_password | 所有版本都支持 |
| caching_sha2_password | V2.6.0完全支持,从V2.0.2-2.5.X需要明文密码 |
| SPIFFE | 基于 X.509 证书的无密码认证 |
| LDAP | 基于目录的身份验证 |
后端验证
(ProxySQL → Databases)
| Method | Notes |
|---|---|
| mysql_native_password | 所有版本都支持 |
| mysql_clear_password | 所有版本都支持 |
| caching_sha2_password | 从V2.6.0开始完全支持 |
特定版本说明
2.0.2:之前不支持caching_sha2_password
2.0.2-2.5.x:前端的caching_sha2_password 需要的是明文密码
2.6.0+:前端和后端都支持caching_sha2_password,并支持了灵活的密码存储选项
配置
设置默认的验证插件
bash
-- Set default authentication plugin
SET mysql-default_authentication_plugin='mysql_native_password';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
users是需要在mysql_users表中进行配置
当前的限制:
密码中以*开始的会导致检测机制失效
当连接握手过程中需要动态切换认证方法时,caching_sha2_password 插件的处理逻辑会变得复杂------因为它依赖缓存的密码哈希,而切换认证方法可能破坏其状态一致性或导致额外的往返通信。
MariaDB 10.10之前版本的客户端使用caching_sha2_password 的时候需要加上--ssl标签