You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助解决mysqli::__construct(): (HY000/1045)数据库连接拒绝错误

问题分析

核心矛盾:能正常进入phpMyAdmin界面,但访问xampp/htdocs/pfs下的网页时,数据库连接报错mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost'。当前使用端口4306,root用户无密码,已尝试多项配置调整但未解决。

针对性排查与解决步骤
  • 确认网页连接代码的端口配置
    你的网页连接文件(db_connection.php)必须明确指定端口4306,否则会默认用3306端口连接,导致失败。正确的mysqli连接代码示例:

    // 替换成你的数据库名,第五个参数是端口号,必须添加
    $conn = new mysqli('localhost', 'root', '', '你的数据库名', 4306);
    

    注意密码参数要填空字符串'',因为root无密码,不能留空位置或填root。

  • 检查MySQL用户权限与主机匹配
    phpMyAdmin能连接不代表网页连接的主机权限匹配:

    1. 打开phpMyAdmin进入「用户账户」页面,找到root用户的localhost条目
    2. 编辑权限,确认「登录信息」里的主机是localhost、密码为空
    3. 额外检查是否存在root@127.0.0.1用户——部分环境下网页连接会解析成127.0.0.1而非localhost,若没有则新建该用户,设置无密码并赋予全权限(仅测试用,生产环境需限制权限)
  • 修正phpMyAdmin的config.inc.php配置
    之前加端口到主机名导致phpMyAdmin无法访问,是因为端口要单独配置,正确写法:

    $cfg['Servers'][$i]['host'] = 'localhost';
    $cfg['Servers'][$i]['port'] = '4306'; // 单独指定端口
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = ''; // 空字符串,不要留空或填root
    $cfg['Servers'][$i]['auth_type'] = 'cookie'; // 保持cookie认证,避免安全问题
    

    修改后重启Apache和MySQL服务,确保phpMyAdmin能正常访问。

  • 验证MySQL端口监听状态
    打开命令提示符(Windows)或终端(Linux/Mac),执行对应命令确认MySQL在监听4306端口:

    # Windows
    netstat -ano | findstr :4306
    # Linux/Mac
    lsof -i :4306
    

    如果没有监听结果,检查my.ini中port=4306是否在[mysqld]区块下,修改后重启MySQL服务。

  • 确认网页访问路径正确性
    必须通过Apache服务器访问网页,路径应为http://localhost/pfs(若Apache用默认80端口),不能直接打开文件系统里的xampp/htdocs/pfs文件——本地文件协议无法触发PHP解析,也无法连接数据库服务。

常见坑点提醒
  • 不要给root用户设密码(你当前无密码),db_connection.php里必须传空字符串
  • phpMyAdmin的主机配置不能带端口,要单独用port参数指定
  • 网页必须通过http://localhost/xxx访问,不能直接双击打开本地文件

内容的提问来源于stack exchange,提问作者Kaleb Evans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:35:15