phpMyAdmin 4.9 无法重置 MariaDB 用户密码,因其仅为数据库内容管理工具,不支持账户认证管理;必须通过命令行执行 ALTER USER(MariaDB 10.2+)或 UPDATE mysql.user 配合 FLUSH PRIVILEGES,并注意 host 匹配、认证插件一致性及 validate_password 策略限制。

phpMyAdmin 4.9 本身不能重置 MariaDB 用户密码
phpMyAdmin 是数据库内容管理工具,不是账户认证管理界面。即使你以 root 登录 phpMyAdmin,它默认不显示或禁止写入 mysql 系统库(含 mysql.user 表),更不会提供“重置用户密码”按钮——因为密码字段在 MariaDB 10.2+ 中已由 Password 改为 authentication_string,且必须经由认证插件处理,直接 UPDATE 极易导致后续无法登录。
必须用命令行执行 ALTER USER(MariaDB 10.2+ 推荐)
前提是你有服务器 SSH 权限和一个能执行用户管理的高权限账号(如已知另一个管理员账号)。操作前先确认目标用户完整标识:
-
SELECT User, Host FROM mysql.user WHERE User = 'root';—— 注意'root'@'localhost'和'root'@'127.0.0.1'是两个不同用户 - MariaDB 默认使用
mysql_native_password插件,但若曾手动切换过,需保持一致,否则新密码无效 - 执行语句必须带完整 host,例如:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!'; - 立即执行
FLUSH PRIVILEGES;,否则变更不生效
连 root 都登不上?只能跳过授权表启动
这是唯一可行的兜底方案,但仅限你拥有服务器 root 权限(Linux/macOS)或 Windows 管理员权限。风险明确:服务暴露无认证状态,操作必须快、准、闭合。
- 停服务:
sudo systemctl stop mariadb(或sudo service mariadb stop) - 跳过权限启动:
sudo mysqld_safe --skip-grant-tables --skip-networking &——--skip-networking防止远程连接,务必加上 - 本地直连:
mysql -u root(此时无需密码) - 重置密码(MariaDB 10.4+ 必须用
authentication_string):UPDATE mysql.user SET authentication_string = PASSWORD('NewPass123!') WHERE User = 'root' AND Host = 'localhost'; - 刷新并退出:
FLUSH PRIVILEGES;→EXIT; - 杀掉
mysqld_safe进程(killall -9 mysqld_safe),再sudo systemctl start mariadb
改完密码后 phpMyAdmin 还登不上?检查三个点
常见失败不是密码错,而是环境错位:
立即学习“PHP免费学习笔记(深入)”;
- phpMyAdmin 配置文件里仍存旧密码:
$cfg['Servers'][$i]['password']在config.inc.php中需同步更新 - 客户端连接时用了错误 host:比如 phpMyAdmin 尝试用
'root'@'127.0.0.1'连,但你只改了'root'@'localhost' - MariaDB 的
validate_password插件启用中,而新密码不符合强度策略(如缺大写字母或特殊字符),会静默拒绝——查日志:sudo tail -n 20 /var/log/mysql/error.log
跳过授权表那步最容易漏掉 --skip-networking,也最容易忘记删掉临时启动参数就重启服务,这些细节一旦出错,要么白忙活,要么留安全隐患。



















