只有拥有mysql.user表写权限的账号(如root)才能在phpMyAdmin“用户账户”页看到编辑按钮;普通账号需用SQL执行ALTER USER或SET PASSWORD修改密码。
点“用户账户”进不去修改页?先确认你有全局权限
phpmyadmin 的密码修改入口藏得有点深,不是所有账号都能直接改——只有拥有 mysql.user 表写权限(通常是 root 或带 grant option 的账号)才能看到“编辑权限”或“更改密码”按钮。如果你点开 用户账户 标签页,只看到列表但没有编辑图标,大概率是当前登录账号权限不足。
- 普通应用账号(比如
app_user)默认只能改自己的密码,但必须通过SET PASSWORD或ALTER USERSQL 手动执行,界面不提供快捷入口 - 用
root登录后,在 用户账户 页找到对应用户名,右侧会显示 编辑权限 链接,点进去才有密码输入框 - 如果连 用户账户 标签页都看不到,说明 phpMyAdmin 配置里禁用了该功能(
$cfg['Servers'][$i]['hide_db'] = 'mysql';或权限控制插件拦截了)
想改自己密码但没编辑按钮?用 SQL 栏手动执行最稳
这是最常被卡住的场景:你用一个非 root 账号登录,想改自己的密码,界面不给入口。别折腾菜单,直接切到 SQL 标签页,手写命令就行。MySQL 5.7.6+ 和 8.0+ 默认要求用 ALTER USER,老版本才支持 SET PASSWORD。
- 改当前账号密码(推荐,兼容 5.7.6+ 和 8.0+):
ALTER USER USER() IDENTIFIED BY '你的新密码';
- 明确指定用户名(适合复制粘贴复用):
ALTER USER 'myuser'@'localhost' IDENTIFIED BY '新密码';
- 老版本(SET PASSWORD = PASSWORD('新密码');但 8.0+ 已移除
PASSWORD()函数,会报错FUNCTION does not exist - 执行后记得点右上角 刷新,否则下次登录仍用旧密码缓存
输完新密码点执行没反应?检查密码策略和字符限制
phpMyAdmin 提交密码修改时不会实时校验强度,但 MySQL 服务端会拦截。常见静默失败原因不是界面问题,而是服务端拒绝:
- MySQL 8.0+ 默认启用
validate_password插件,密码必须含大小写字母+数字+特殊符号,且长度 ≥8。输123456会报错:Your password does not satisfy the current policy requirements - 密码里含单引号
'、反斜杠\或分号;可能被 SQL 解析器截断,建议先在文本编辑器里验证再粘贴 - 如果用的是 MariaDB,
ALTER USER语法略有不同:SET PASSWORD = PASSWORD('xxx')仍可用,但推荐统一用ALTER USER ... IDENTIFIED VIA mysql_native_password BY 'xxx'避免认证插件冲突
改完密码登不上?重点查 host 匹配和认证插件
密码改成功了,但新密码登录失败,90% 是因为没注意 user@host 的完整匹配规则,或者认证方式变了。
- MySQL 认证看的是
username@hostname全字段,比如你改的是'admin'@'localhost',但连接时用的是admin@127.0.0.1,这算两个账号,密码互不影响 - MySQL 8.0 默认用
caching_sha2_password插件,部分旧版 PHP(Client does not support authentication protocol。解决方法是在ALTER USER后加IDENTIFIED WITH mysql_native_password BY 'xxx' - 改完务必在终端用
mysql -u 用户名 -p实测,别只信 phpMyAdmin 界面是否“没报错”
localhost 和 127.0.0.1 被当成了两个用户。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











