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

PHP项目出现Fatal Error:MySQL 1045访问被拒,求技术支持

解决MySQL SQLSTATE[HY000] [1045] 访问拒绝错误

错误信息

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES) in C:\xampp\htdocs\qrcode\dbcon.php:5 Stack trace: #0 C:\xampp\htdocs\qrcode\dbcon.php(5): PDO->__construct('mysql:host=loca...', 'root', 'Emiloi21') #1 C:\xampp\htdocs\qrcode\login.php(3): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\qrcode\dbcon.php on line 5

相关代码

dbcon.php

; <?php

date_default_timezone_set('Asia/Manila');

$conn = new PDO('mysql:host=localhost;dbname=qrCodeGen', 'root', '---');
 
?> 

login.php

; <?php

    include('dbcon.php');
    
    session_start();
    
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    $safe_pass=md5($password);
    $salt="a1Bz20ydqelm8m1wql";
    $final_pass=$salt.$safe_pass;
    
    /* student */
        $query = $conn->query("SELECT * FROM useraccounts WHERE username='$username' AND password='$final_pass'");
        $row = $query->fetch();
        $num_row = $query->rowcount();
    if( $num_row > 0 ) { 
       

    $_SESSION['useraccess']=$row['access'];
    $_SESSION['id']=$row['user_id'];


    if($row['access']==='Administrator'){ ?>
    
        <script>window.location = 'home.php';</script>
       
       <?php }else{ ?>
       
       <script>window.location = 'home.php';</script>
       
<?php } }else{ ?>

       <script>
       window.alert("User not found...")
       window.location = 'index.php';
       </script>
       
<?php } ?>

解决方案

  • 修正数据库密码:错误提示显示实际使用的密码是Emiloi21,但dbcon.php中密码写的是---,将---替换为Emiloi21,确保与MySQL root用户密码一致。
  • 确认数据库存在:检查qrCodeGen数据库是否已在MySQL中创建,若未创建,通过phpMyAdmin或MySQL命令行手动创建。
  • 检查MySQL服务状态:确保XAMPP中的MySQL服务处于启动状态,未启动则开启服务。
  • 修复安全漏洞:当前login.php存在SQL注入风险,建议改用PDO预处理语句,示例修改如下:
    $query = $conn->prepare("SELECT * FROM useraccounts WHERE username=? AND password=?");
    $query->execute([$username, $final_pass]);
    $row = $query->fetch();
    $num_row = $query->rowCount();
    
    另外,MD5属于不安全的哈希算法,建议替换为password_hash()和password_verify()处理密码存储与验证。

内容的提问来源于stack exchange,提问作者Sans Kuri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:30:58