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预处理语句,示例修改如下:
另外,MD5属于不安全的哈希算法,建议替换为$query = $conn->prepare("SELECT * FROM useraccounts WHERE username=? AND password=?"); $query->execute([$username, $final_pass]); $row = $query->fetch(); $num_row = $query->rowCount();password_hash()和password_verify()处理密码存储与验证。
内容的提问来源于stack exchange,提问作者Sans Kuri
相关产品推荐
相关产品推荐

