ShardingSphere-Proxy需手动将MySQL驱动(如mysql-connector-java-8.0.22.jar)放入ext-lib目录,且必须匹配MySQL版本;配置文件须严格遵循YAML格式(空格缩进、全大写type值)、命名规范(config-xxx.yaml),并重启生效。

直接解压启动就能用,但 MySQL 驱动必须手动放对位置
ShardingSphere-Proxy 在 Linux 下不是装完就跑的“一键式”工具,bin/start.sh 能执行成功,不代表能连上后端数据库——最常卡在 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver。原因很实在:ShardingSphere-Proxy 默认不带任何数据库驱动,你得自己把 mysql-connector-java-8.0.22.jar(或适配你 MySQL 版本的驱动)扔进 ext-lib/ 目录。
- 别往
lib/里塞,那是给 ShardingSphere 自身扩展用的;ext-lib/才是 JDBC 驱动的法定落脚点 - 驱动版本要匹配:MySQL 8.x 用
mysql-connector-java-8.x,5.7 用5.1.47或6.0.6,混用大概率报Communications link failure - 确认文件权限:确保
ext-lib/mysql-connector-java-*.jar对运行start.sh的用户可读
server.yaml 里 auth 配置写错,连都连不上
默认配置里 rules 下的权限规则如果格式不对,Proxy 启动时不会报错,但客户端一连就提示 Access denied for user 'root'@'xxx'——它压根没加载你写的用户规则。
-
users必须是列表结构,每个元素是username@host:password形式,比如- root@%:root,不能写成root: root或漏掉@% -
provider.type值必须全大写,如ALL_PRIVILEGES_PERMITTED,写成all_privileges_permitted或AllPrivilegesPermitted都无效 - 缩进必须用空格,不能用 Tab;YAML 对空格极其敏感,
users前多一个空格就导致整个rules段被忽略
conf/config-xxx.yaml 分片配置改了却没生效
很多人改完 conf/config-sharding.yaml 就重启,发现 SQL 还是直连单库——根本没走分片逻辑。问题往往出在配置加载链路上。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
server.yaml里的rules只管权限和全局开关,真正决定用哪个分片规则的是mode和props下的proxy.frontend.database.protocol等参数,但实际生效靠的是config-xxx.yaml文件名是否被start.sh自动识别 - ShardingSphere-Proxy 5.1+ 默认只加载以
config-开头、且后缀为.yaml的文件(如config-sharding.yaml),sharding-config.yaml或config-sharding.yml都会被无视 - 改完配置后必须重启 Proxy,热加载不支持分片规则变更;只改
server.yaml中的sql-show: true可以动态生效,但分片策略不行
端口冲突或防火墙拦住连接
启动日志显示 Starting proxy server... 就停住,或者客户端报 Can't connect to MySQL server on '127.0.0.1' (111),八成是端口没通。
- 默认端口是
3307,不是3306;检查是否有其他进程占用了该端口:lsof -i :3307或netstat -tuln | grep 3307 - 如果改过
server.yaml里的props.proxy.port,务必确认start.sh启动时没被命令行参数覆盖,例如bin/start.sh 3308会强制用 3308,无视配置文件 - Linux 防火墙(firewalld 或 ufw)可能拦截外部连接,测试时先临时关掉:
sudo systemctl stop firewalld(CentOS)或sudo ufw disable(Ubuntu)
配置文件路径、驱动位置、YAML 格式、端口监听——这四个点任一出错都会让 Proxy 表面启动成功实则不可用。尤其注意 ext-lib 和 config- 命名规范,这是新手掉坑最多的地方。

















