数据库连接是客户端与MySQL服务器间有状态、有生命周期的通信通道,涉及TCP/Unix Socket建连、认证授权、线程分配及会话初始化;支持Unix Socket、TCP/IP、TLS/SSL等协议;关键配置含max_connections、wait_timeout等;PHP常用mysqli和PDO方式建立连接。

数据库连接,就是客户端程序和 MySQL 服务器之间建立的一条通信通道,用来发送 SQL 命令、接收查询结果、执行增删改等操作。它不是“点一下就通”的瞬时动作,而是一套有状态、有生命周期、涉及认证与资源分配的完整机制。
连接是怎么建立的
客户端发起连接请求后,MySQL 服务端按顺序完成以下几步:
- TCP 三次握手(远程连接)或 Unix Socket 文件通信(本地连接)建立底层网络通路
- 验证用户名、密码、来源主机(比如
'root'@'localhost'或'app'@'192.168.1.%') - 检查该用户是否具备登录权限,以及对应库表的操作权限
- 分配一个专属线程(Thread-Per-Connection 模式)或从线程池中复用线程
- 初始化会话变量:字符集(如 utf8mb4)、时区、SQL 模式、事务隔离级别等
常见的连接方式有哪些
MySQL 支持多种物理连接协议,不同场景下默认行为不同:
-
Unix Socket:本地连接默认方式(Linux/macOS),不走网络栈,性能高、更安全,路径通常为
/tmp/mysql.sock -
TCP/IP:跨机器或显式指定 IP 时使用(如
-h 127.0.0.1 -P 3306),支持远程访问,需注意防火墙和 bind-address 配置 - TLS/SSL 加密连接:在传输层加密数据,防止中间人窃听,适用于公网或合规要求高的环境
- Windows 特有方式(Named Pipes / Shared Memory):仅限 Windows 系统,日常开发中较少涉及
连接背后的关键配置项
这些参数直接影响连接能否成功、能开多少、能维持多久:
Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例
-
max_connections:全局最大并发连接数,默认 151,高并发应用常需调大 -
wait_timeout:非交互式连接空闲超时(如 PHP 脚本连接),单位秒,默认 28800(8 小时) -
interactive_timeout:交互式连接空闲超时(如 mysql 客户端),默认也是 28800 -
thread_cache_size:缓存空闲线程数量,减少频繁创建销毁线程开销 -
connect_timeout:客户端尝试连接时等待响应的最大时间,防卡死
连接在代码里怎么写
以 PHP 为例,主流有三种风格,本质都是完成「建立连接 → 认证 → 设置编码 → 执行语句」这一流程:
-
面向对象 mysqli:
$mysqli = new mysqli('localhost', 'root', 'pwd', 'test'); -
过程式 mysqli:
$link = mysqli_connect('localhost', 'root', 'pwd', 'test'); -
PDO(推荐):
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'root', 'pwd');
无论哪种方式,都建议显式设置字符集(如 utf8mb4),避免中文乱码;生产环境应禁用 root 远程登录,使用最小权限专用账号。









