DVWA项目中的MariaDB认证问题分析与解决方案
问题背景
在使用DVWA(Damn Vulnerable Web Application)项目时,许多用户在配置MariaDB数据库连接时会遇到认证失败的问题。特别是在Kali Linux环境下,当用户尝试通过setup.php页面创建或重置数据库时,系统会抛出"Access denied"错误,提示对'kali'@'localhost'用户的访问被拒绝。
问题分析
这个问题通常由以下几个技术因素导致:
-
认证方式不匹配:MariaDB支持多种认证方式,包括密码认证和Unix socket认证。DVWA默认配置使用的是密码认证方式,但如果用户在MariaDB中配置了socket认证,就会导致连接失败。
-
密码哈希算法兼容性:MariaDB 10.7版本引入了ed25519密码哈希算法,而PHP的MySQL/MariaDB驱动目前还不支持这种新型哈希算法。
-
运行用户权限:当使用socket认证时,MariaDB会检查运行PHP进程的系统用户(通常是www-data)是否在数据库中有对应账号,而不是使用配置文件中指定的用户名。
解决方案
方案一:使用传统密码认证
-
首先确保删除现有的用户账号:
DROP USER 'kali'@'localhost'; -
创建使用传统密码认证的用户:
CREATE USER 'kali'@'localhost' IDENTIFIED BY 'kali'; GRANT ALL PRIVILEGES ON dvwa.* TO 'kali'@'localhost'; FLUSH PRIVILEGES; -
在DVWA的config.inc.php中配置:
$_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'kali'; $_DVWA[ 'db_password' ] = 'kali';
方案二:使用Unix socket认证
-
创建与PHP运行用户同名的数据库账号:
CREATE USER 'www-data'@'localhost' IDENTIFIED VIA unix_socket; GRANT ALL PRIVILEGES ON dvwa.* TO 'www-data'@'localhost'; FLUSH PRIVILEGES; -
在DVWA的config.inc.php中配置:
$_DVWA[ 'db_server' ] = 'localhost'; // 必须使用localhost才能触发socket连接 $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'www-data'; $_DVWA[ 'db_password' ] = ''; // 留空
技术要点
-
localhost与127.0.0.1的区别:在MySQL/MariaDB连接中,使用"localhost"会尝试通过Unix socket连接,而使用IP地址"127.0.0.1"则会通过TCP/IP连接。
-
认证方式选择:Unix socket认证更加安全,因为它不通过网络传输凭证,且依赖于系统用户权限。但密码认证方式更加灵活,适合远程连接场景。
-
密码哈希算法:虽然MariaDB 10.7支持ed25519等新型哈希算法,但PHP的MySQL扩展目前仅支持传统的mysql_native_password和caching_sha2_password算法。
最佳实践建议
-
对于本地开发环境,推荐使用Unix socket认证方式,安全性更高且配置简单。
-
如果必须使用密码认证,建议明确指定使用mysql_native_password算法:
CREATE USER 'kali'@'localhost' IDENTIFIED WITH mysql_native_password BY 'kali'; -
在配置完成后,建议通过命令行测试连接:
mysql -u kali -pkali注意-p参数后直接接密码,不留空格。
通过以上分析和解决方案,用户应该能够顺利解决DVWA与MariaDB之间的认证问题,为后续的Web安全学习和测试奠定基础。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0204- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00