php 7.3 连接数据库失败的常见原因依次是:扩展未启用(需确认 mysqli/pdo_mysql 已加载)、连接参数错误(含服务状态、host、端口、凭据)、权限与 host 绑定不匹配(如 'user'@'localhost' 无法通过 127.0.0.1 连接)、防火墙/selinux 拦截及错误信息未捕获。

PHP 7.3 连接数据库失败,常见原因集中在配置、扩展、权限和网络四方面。不用急着重装,按顺序检查这几处,90% 的问题能快速定位。
确认 MySQL 扩展已启用且兼容
PHP 7.3 默认不自带 mysql 扩展(mysql_* 函数早已废弃),必须使用 mysqli 或 PDO_MySQL。先验证扩展是否加载:
- 运行
php -m | grep -i "mysqli\|pdo_mysql",确保输出包含mysqli和/或pdo_mysql - 若无输出,编辑
php.ini,取消以下行的注释(去掉前面的分号):
extension=mysqli
extension=pdo_mysql - 保存后重启 Web 服务(如 Apache 或 phpstudy 中的 Apache)或 PHP-FPM
核对连接参数与服务状态
错误常出在“看着对、其实错”的细节上:
- 检查数据库服务是否正在运行:
systemctl status mysqld(CentOS/RHEL)或sudo service mysql status(Ubuntu/Debian) - 确认连接地址:本地连接用
127.0.0.1(走 TCP)或localhost(可能走 socket,部分配置下行为不同);远程连接需确认 MySQL 允许外部访问(bind-address = 0.0.0.0且用户授权含'user'@'%') - 用户名、密码、数据库名大小写敏感(尤其 Linux 环境),建议用单引号包裹字符串,避免空格或不可见字符
查看具体错误信息,不跳过 warning
仅看“连接失败”没用,必须捕获真实报错:
- 用
mysqli_connect()时,加上or die(mysqli_connect_error());用 PDO 时开启异常模式:
$pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); - 检查 PHP 错误日志路径(
phpinfo()查 error_log 项),常见位置:
/var/log/php_errors.log(Linux)
phpstudy 安装目录\PHPTutorial\php\php-7.3.0\logs\php_error.log(Windows) - 典型报错含义:
“Connection refused” → MySQL 未启动或端口被占
“Access denied” → 用户名/密码错,或主机限制(如只允许localhost)
“Unknown MySQL server host” → DNS 解析失败或地址拼写错误
检查 SELinux 或防火墙干扰(Linux 生产环境)
CentOS/RHEL 系统默认启用 SELinux,可能阻止 Apache 子进程连接本地 MySQL:
- 临时放行测试:
setsebool -P httpd_can_network_connect_db 1 - 确认防火墙开放 3306 端口:
firewall-cmd --list-ports | grep 3306,未开放则执行:
firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload - 若用云服务器(如阿里云、腾讯云),还需检查安全组规则是否放行 3306
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











