“Connection refused”说明PHP根本未连上MySQL进程,主因是MySQL服务未运行或端口被防火墙拦截,需先检查服务状态、端口监听、用户授权及认证插件兼容性。

mysqli_connect() 报错 “Connection refused” 或 “Can't connect to MySQL server”
这基本说明 PHP 根本连不上 MySQL 进程,不是密码错、不是权限问题,而是“物理断联”。最常见原因是 MySQL 服务压根没起来,或端口被改了但 PHP 还在找默认的 3306。
- 先打开 PHPStudy 控制面板,确认
MySQL Service状态是“已启动”——别只看图标绿不绿,点开“日志”看看有没有报错(比如端口绑定失败) - 右键 MySQL 行 → “配置” → 打开
my.ini,搜port,确认实际监听端口(比如你改成了33306),然后检查所有 PHP 文件里mysqli_connect()的第四个参数(端口)或 DSN 中的port=是否同步更新 - 如果本地已有 MySQL(比如 Navicat 连着的独立安装版),它很可能占了
3306。PHPStudy 启动时会静默失败,但控制面板可能仍显示“运行中”——这时必须改 PHPStudy 的 MySQL 端口,或关掉原有 MySQL
mysqli_connect() 返回 false 但错误信息是 “Access denied for user”
连接通了,但认证失败。典型错误码 #1045,说明用户名/密码对不上,或者用户没被授权访问目标数据库。
- 不要凭记忆填密码:进 PHPStudy → “数据库” → “用户”,找到你用的用户名(比如
root或dvwa),点编辑,复制“密码”字段的明文值,粘贴到 PHP 文件里 —— 尤其注意大小写、特殊字符(如P@ssw0rd里的@和0) - 检查用户“主机”字段:如果是
localhost,PHP 用127.0.0.1连也可能失败(MySQL 内部视作不同主机),统一用localhost;若需远程连接,得设成%并勾选“授予全部权限” - DVWA、WordPress、sqli-labs 这类项目都有自己的配置文件(
config.inc.php、wp-config.php、db-creds.inc),它们的DB_USER和DB_PASSWORD必须和 PHPStudy 用户页里完全一致,一个字符都不能差
php.ini 里 mysqli 扩展没启用或配置错位
即使代码写对、服务开着、账号密码准,mysqli_connect() 也可能直接报“function not found”,这是扩展根本没加载。
- 在 PHPStudy 控制面板切换到你要用的 PHP 版本,点“设置” → “PHP扩展” → 确保
mysqli已勾选(注意:不是mysql,那个已废弃) - 打开对应 PHP 版本的
php.ini(路径在 PHPStudy 面板里有提示),搜extension=mysqli,确认该行没被注释(前面不能有分号;) - 别乱改
mysql.default_host这类旧配置项——PHP 7.4+ 已弃用,改了也没用;真正起作用的是你代码里传给mysqli_connect()的参数
PDO 连接时提示 “could not find driver”
用 PDO 而不是 mysqli 时,new PDO('mysql:host=localhost;dbname=test') 报这个错,说明 PDO 的 MySQL 驱动没加载。
立即学习“PHP免费学习笔记(深入)”;
- 同样进 PHPStudy → 当前 PHP 版本 → “PHP扩展”,确保
pdo_mysql已启用(注意不是pdo_odbc或pdo_sqlite) - 检查
php.ini里是否有extension=pdo_mysql,且未被注释;如果用了线程安全(TS)版本的 PHP,扩展名可能是php_pdo_mysql.dll,路径要对 - PDO 的 DSN 中
host值必须明确,不能只写mysql:dbname=test——漏掉host=会导致驱动识别失败
php.ini 和扩展开关是按版本独立管理的,改了 A 版本的配置,B 版本照样连不上。务必确认当前网站绑定的 PHP 版本,再针对性检查。



















