求助解决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能连接不代表网页连接的主机权限匹配:- 打开phpMyAdmin进入「用户账户」页面,找到root用户的localhost条目
- 编辑权限,确认「登录信息」里的主机是
localhost、密码为空 - 额外检查是否存在
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

