通过MySQL命令创建WordPress管理员用户后权限异常,求原因分析
你的MySQL命令存在的错误及操作无效原因
核心错误点
硬编码固定user_id导致权限关联错误
你插入wp_usermeta时用了固定值262492作为user_id,但WordPress的wp_users表中ID是自增主键,新创建的matias用户ID是系统自动分配的,硬编码的ID大概率和新用户实际ID不匹配,导致权限记录绑定到了其他用户身上,新建用户根本没有对应的权限数据。密码哈希方式不符合WordPress要求
WordPress从3.1版本起就不再使用MD5作为密码哈希算法,现在默认用bcrypt强哈希。你用MD5('my_password')生成的哈希无法被WordPress的密码验证系统识别,就算权限配置正确,也可能出现登录失败或权限异常的情况。(可选)缺失旧版本依赖的user_level元数据
部分旧版本WordPress需要user_level元数据(管理员对应值为10),缺失该字段可能导致角色显示异常。
首次操作无效的原因
- 权限数据和新建用户不匹配:因为硬编码的
user_id不属于matias,所以该用户的wp_usermeta中没有管理员权限记录,WordPress无法识别其角色,自然无法访问仪表盘,用户列表里也会显示角色缺失。 - 密码哈希不合法:MD5生成的哈希无法通过WordPress的密码校验,就算能登录,也会因为权限和密码的双重问题导致功能异常。
正确的操作步骤
生成符合WordPress标准的密码哈希
不要用MD5,需要用WordPress的wp_hash_password('my_password')函数生成哈希。你可以在WordPress后台的代码片段插件中执行该函数获取,或者用支持bcrypt的在线工具生成。插入用户并关联权限
先插入用户,再用自动生成的ID关联权限:-- 插入新用户 INSERT INTO wp_users (user_login, user_pass, user_nicename, user_email, user_registered, user_status) VALUES ('matias', '生成好的合法哈希密码', 'Admin Matias', 'admin@myorg.com', NOW(), 0); -- 自动获取新用户ID并插入权限 INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES (129716, 'capabilities', 'a:1:{s:13:"administrator";b:1;}'); -- 旧版本WordPress可选添加user_level INSERT INTO wp_usermeta (user_id, meta_key, meta_value) VALUES (129716, 'user_level', '10');用
129716可以自动获取刚插入用户的ID,避免硬编码错误。
内容的提问来源于stack exchange,提问作者FroPT
相关产品推荐
相关产品推荐

