PHP 连 TiDB 直接使用 mysqli 或 PDO_MYSQL 即可,无需专用驱动;需确保 TiDB 服务运行、端口开放、权限正确,并在 DSN 中指定 charset=utf8mb4。
PHP 连 TiDB 用的是 MySQL 协议,不是特殊驱动
TiDB 兼容 MySQL 5.7 协议,所以 PHP 不需要装“TiDB 专用驱动”,直接用 mysqli 或 PDO_MYSQL 就行。很多开发者卡在找“tidb-php-driver”,其实根本不存在——TiDB 对接 PHP 的方式和连 MySQL 完全一致。
关键点:确认 TiDB 服务已启动、port 开放(默认 4000)、账号有权限、防火墙/SELinux 没拦住连接。
用 PDO 连 TiDB 最简示例(推荐)
PDO 更易管理连接、支持预处理、兼容性好。注意 DSN 中必须显式指定 charset=utf8mb4,否则中文可能乱码或插入失败。
$dsn = 'mysql:host=127.0.0.1;port=4000;dbname=test;charset=utf8mb4';
$pdo = new PDO($dsn, 'root', '', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
-
host填 TiDB Server 地址(非 PD 或 TiKV) - 别漏写
port=4000,TiDB 默认不用 3306 - 若用 TLS 连接,需加
sslmode=require和证书路径参数 - 连接池类库(如
spiral/database)也适用同一套 DSN 规则
mysqli_connect() 失败常见原因
报错 Connection refused 或 Access denied 是高频问题,多数不是代码问题,而是环境配置没对:
立即学习“PHP免费学习笔记(深入)”;