这不是WordPress权限丢失,而是MySQL用户认证或授权问题;需先区分是登录失败(认证层)还是操作被拒(权限层),再针对性修复config.inc.php配置、mysql.user权限或wp_usermeta角色数据。
phpMyAdmin里用户权限丢了,先确认是不是真没了
别急着改数据库,先验证问题范围:登录phpmyadmin后,用原账号尝试创建表、修改结构——如果报 access denied 或 select command denied,说明权限确实丢失;但如果连登录都失败,那根本不是权限问题,是认证层(比如mysql的caching_sha2_password插件)或配置文件(config.inc.php)出错了。
直接改wp_usermeta表恢复WordPress管理员权限
这是最常见也最有效的操作,但只适用于WordPress站点。权限信息存在wp_usermeta表里,不是MySQL的mysql.user表。
- 进phpMyAdmin → 找到你的WordPress数据库 → 打开
wp_usermeta表 - 用
user_id筛选出你的用户(先查wp_users表确认ID) - 找到
meta_key为wp_capabilities的行(注意前缀可能不是wp_) - 把
meta_value改成:a:1:{s:13:"administrator";b:1;} - 如果这行不存在,就手动新增:填
user_id、meta_key为wp_capabilities、meta_value同上
改完立刻生效,不用重启服务,但前台缓存可能需要手动清空。
修复MySQL用户本身的ALTER/CREATE权限
如果你在phpMyAdmin里操作其他数据库时提示“没有权限执行ALTER TABLE”,问题在MySQL用户授权体系,和WordPress无关。
- 先用root账号登录phpMyAdmin,进
mysql库 → 查user表,确认该用户Host和User字段是否匹配(比如'myuser'@'localhost') - 执行SQL重授予权限:
GRANT ALTER, CREATE ON `database_name`.* TO 'myuser'@'localhost'; - 必须跟一句:
FLUSH PRIVILEGES;,否则不生效 - 检查是否被全局限制:运行
SHOW GRANTS FOR 'myuser'@'localhost';,看输出里有没有USAGE以外的权限
注意:MySQL 8.0+默认禁用GRANT OPTION,如果要让用户能转授权限,得显式加上WITH GRANT OPTION。
立即学习“PHP免费学习笔记(深入)”;
权限恢复后仍不生效?重点查这三个地方
改完数据库或执行了GRANT,但权限还是不起作用,大概率卡在这几个细节上:
-
config.inc.php里写的$cfg['Servers'][$i]['host']不是127.0.0.1而是localhost——MySQL会走socket连接,而socket下'user'@'localhost'和'user'@'127.0.0.1'是两个不同账号 - 用户密码为空或被重置过,但
GRANT语句没带IDENTIFIED BY,导致认证失败而非权限拒绝 - MySQL开启了
skip-name-resolve,但user表里Host填的是域名而非IP,导致匹配失败
真正起效的权限恢复,从来不是单点修改,而是认证方式、账号定义、授权语句三者严丝合缝。漏掉任何一个,都会让你在phpMyAdmin里看到“权限已改”却依然被拒。



















