数据库连接是客户端与MySQL服务器间有状态、有生命周期的通信通道,涉及TCP/Unix Socket建连、认证授权、线程分配及会话初始化;支持Unix Socket、TCP/IP、TLS/SSL等协议;关键配置含max_connections、wait_timeout等;PHP常用mysqli和PDO方式建立连接。
数据库连接,就是客户端程序和 MySQL 服务器之间建立的一条通信通道,用来发送 SQL 命令、接收查询结果、执行增删改等操作。它不是“点一下就通”的瞬时动作,而是一套有状态、有生命周期、涉及认证与资源分配的完整机制。
客户端发起连接请求后,MySQL 服务端按顺序完成以下几步:
'root'@'localhost' 或 'app'@'192.168.1.%')MySQL 支持多种物理连接协议,不同场景下默认行为不同:
/tmp/mysql.sock
-h 127.0.0.1 -P 3306),支持远程访问,需注意防火墙和 bind-address 配置
统,日常开发中较少涉及这些参数直接影响连接能否成功、能开多少、能维持多久:
max_connections:全局最大并发连接数,默认 151,高并发应用常需调大wait_timeout:非交互式连接空闲超时(如 PHP 脚本连接),单位秒,默认 28800(8 小时)interactive_timeout:交互式连接空闲超时(如 mysql 客户端),默认也是 28800thread_cache_size:缓存空闲线程数量,减少频繁创建销毁线程开销connect_timeout:客户端尝试连接时等待响应的最大时间,防卡死以 PHP 为例,主流有三种风格,本质都是完成「建立连接 → 认证 → 设置编码 → 执行语句」这一流程:
$mysqli = new mysqli('localhost', 'root', 'pwd', 'test');
$link = mysqli_connect('localhost', 'root', 'pwd', 'test');
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'root', 'pwd');
无论哪种方式,都建议显式设置字符集(如 utf8mb4),避免中文乱码;生产环境应禁用 root 远程登录,使用最小权限专用账号。