使用mysqli连接MySQL数据库遇1045(Access Denied)错误,求解决方案
嘿,我来帮你拆解这个数据库连接错误的问题!
首先,我注意到一个关键的矛盾点:错误提示里显示的是用户eyohan01@localhost被拒绝访问,但你贴出来的连接代码里用的是root用户。这说明要么你实际运行的代码和你贴的不一样,要么数据库的权限配置有问题,下面我分情况给你排查方案:
1. 先确认你实际运行的代码内容
错误提示明确指出问题出在C:\xampp\htdocs\artgallery\connect.php的第7行,你贴的代码和这个路径里的代码大概率不一致——比如第7行可能是用了eyohan01作为用户名,而不是root。
先去打开这个文件,检查第7行的mysqli_connect(或者mysqli::__construct)调用里的用户名、密码、数据库名是否正确。另外,你贴的代码本身还有两个小bug:
- 变量名不统一:你定义的连接变量是
$connect,但后面mysqli_select_db用的是$conn,这会导致另一个未定义变量的错误 - 没必要分开调用
mysqli_connect和mysqli_select_db,可以直接在mysqli_connect的第四个参数里指定数据库名,简化代码:
<?php // 正确的写法示例(替换成你的真实用户名和密码) $connect = mysqli_connect("localhost", "root", "你的密码", "artgallery") or die("Connection failed: " . mysqli_connect_error()); ?>
2. 如果确实要用eyohan01用户连接数据库
如果你的代码里确实是用eyohan01作为连接用户,那错误说明这个用户没有访问localhost上artgallery数据库的权限,或者密码错误。你可以按以下步骤解决:
- 打开XAMPP控制面板,启动Apache和MySQL,然后点击MySQL旁边的
Admin进入phpMyAdmin - 用
root用户登录后,点击顶部的用户账户选项卡,找到eyohan01用户 - 检查以下几点:
- 该用户的主机是否设置为
localhost(如果需要允许远程连接,可以设为%) - 密码是否正确,或者直接重新设置一个密码
- 该用户是否拥有
artgallery数据库的访问权限(可以先给全权限测试,之后再按需缩小权限)
- 该用户的主机是否设置为
- 也可以直接在phpMyAdmin的SQL执行框里运行授权语句:
-- 替换成你的真实密码 GRANT ALL PRIVILEGES ON artgallery.* TO 'eyohan01'@'localhost' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;
3. 如果是用root用户连接但密码错误
XAMPP默认的root用户密码是空的,但如果你之前修改过root的密码,就需要在代码里填上正确的密码。比如如果root的密码是123456,代码应该写成:
<?php $connect = mysqli_connect("localhost", "root", "123456", "artgallery") or die("Connection failed: " . mysqli_connect_error()); ?>
内容的提问来源于stack exchange,提问作者Emmanuel John




