找回密码
 立即注册

QQ登录

只需一步,快速开始

跨越N多个版本升级到X3.5后,咋都无法登录admin的问题!

2024-10-31 16:21| 发布者: ae2942d9| 查看: 116| 评论: 5

摘要: 如题,过去的三四天里找遍了论坛内,确有发现跟我有同样遭遇的站长…… 但却没有解决办法!苦熬N多个小时,总算自己解决了,在此分享给碰巧跟我同样问题却依然未解决的站长。我遭遇这情况的问题根源是Discuz! X3.?
如题,过去的三四天里找遍了论坛内,确有发现跟我有同样遭遇的站长…… 但却没有解决办法!

苦熬N多个小时,总算自己解决了,在此分享给碰巧跟我同样问题却依然未解决的站长。

我遭遇这情况的问题根源是Discuz! X3.? 后新增了“bcrypt”密码加密算法…… 虽然论坛用户数据表中存储的依然是md5方式加密的密码,但与之互通的uc_server的用户数据表中存储的却是“bcrypt”加密的……

以上的原由也是我解决之后发现的,在一切未知的情况下我用的是最笨的方式“升级”,基本步骤如下:

第1步,用phpmyadmin或同类工具确认好,“无法登录管理员”的完整数据库还在,这是必须!

第2步,手工的,另外的再安装一份儿全新x3.5,记住admin的账号,今后会一直用它了(安装后在phpmyadmin类工具再确认前后两个数据库是否都在了,下面以“旧”和“新”说明)!


第3步,在旧数据库中的“_common_member”表上操作,导出,选择“仅数据”(不要结构),其它选项按需选择即可,拿到这个.sql文件后用vscode类文本编辑打开,删除admin那条后保存;

第4步,切换到新数据库,选择导入操作,就是第3步时刚去掉admin那条的那个 .sql 文件…… 然后等待完成!
第3和4两步骤在具体操作时可能碰到各种各样的问题,例如碰到某字段在新数据库中是不存在的…… 这种就是“被弃用”的,此时就得先在旧数据库中将“相应字段在结构管理员干掉先,然后再重来第3、4两步,直至完成之。(我在操作时就碰到个“videophotostatus”字段在新数据库中不存在)

第5步,针对需要的数据表,每个站长的情况均有区别,按需重复以上两步骤即可,具体我留意到的数据表附在最后供大伙参考!


第6步,别以为完成了,千万别在此时开放用户访问!还有坑——因为咱们是手工搬的数据,所以有的数据表存在“自增id序列”的坑……(别问我咋知道的😒)
还是用phpmyadmin或sql语句看看最大的一个用户id是多少,然后我们需要手工改两个用户表( _common_member 和 _ucenter_members )的自增,在phpmyadmin中操作是先选中表,然后点上面菜单的“操作”,找到“AUTO_INCREMENT”设置比当前最大用户id多1个的数字即可
(这步骤我是用SQL语句完成的,也写这儿供参考:
ALTER TABLE pre_common_member AUTO_INCREMENT = 10001;
ALTER TABLE pre_ucenter_members AUTO_INCREMENT = 10001;

上面的表名要改成你的新数据一致的表名,10001就是要设的值,这里假设了老用户最大id是10000)


第7步,我未解,也不知道能否有解的问题…… 这样admin是肯定登录正常了,那其他老用户呢?没错,无法直接登录,只能公告大家点“忘记密码”或管理员手台给手工操作去修改密码方可登录。有没有办法能把这个问题解决呢?眼下未知!

至于其它那些清缓存,重新统计啥数字的…… 那些不用我说了!

在第5步时承诺了要附上的我留意到的相关表和说明:

用户相关
_common_member:用户基本信息(就是我们跳过admin那个表 UID 1)。
_ucenter_members: 同步的用户数据表(这就是我提到了它启用了新加密算法保存密码的表,操作时同样要先删除admin对应的 UID 所在行后再向新数据库导入)
_common_member_profile:用户个人资料信息。
_common_member_count:用户计数信息,如发帖数、积分等,我没弄。
_common_member_status:用户状态信息,如最后登录、在线状态,我没弄。
_common_member_field_forum:用户论坛相关扩展字段。
_common_member_field_home:用户家园相关扩展字段,我没弄。
_common_member_validate:用户实名认证信息,我没弄。

论坛和帖子相关
_forum_forum:论坛版块信息。
_forum_thread:主题帖信息。
_forum_post:回帖信息。
_forum_post_tableid:帖子表 ID 信息(不同表管理不同的帖子存储)。
_forum_attachment:附件信息(如果有附件)。
_forum_attachment_n:附件存储表(n 为附件分表编号)。

权限和管理相关
_common_usergroup:用户组信息(包括权限设置)。
_forum_moderator:版主和管理员设置,我没弄。

积分和交易相关(我没弄)
_common_credit_log:积分日志,如果需要保留用户的积分变更记录。
_common_magiclog:道具相关日志。
_common_medallog:勋章相关日志。

其它可能需要的(我没弄):
_common_task:任务信息(如果使用任务系统)。
_home_doing:记录用户动态。
_home_blog:用户博客(如启用了家园模块)。


故意没隐藏任何的,但感觉好累…… 好久没写这么长的帖子了!觉得我辛苦的,评论区给赞赞吧!

来源:https://www.dismall.com/thread-23703-1-1.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
发表评论

最新评论

引用 4d5a8576d 2024-10-31 17:26
6.0->X3.5都升级一大把了,论坛用户表的密码是假的,那个不用于验证登录。X3.5密码存储方式变更为password_​hash,但同时也是向下兼容md5的密码的验证
引用 c2688 2024-10-31 17:15
【写在最后】在完成以上操作后即会晃然大悟,为何不“反向操作”呢?我估计,也能行!(有人大胆尝试后记得分享给我结果哦😉)在全程折腾后,我越来越清晰——其实遭遇这情况的问题根源是Discuz! X3.2 之后新增了“bcrypt”密码加密算法…… 虽然论坛用户数据表中存储的依然是md5方式加密的密码,但与之互通的uc_server的用户数据表中存储的却是“bcrypt”加密的。
引用 76a9 2024-10-31 17:00
您是站着说话不腰疼!~有没有亲自操作过从7.0升到X3.5?若想较真儿,建议您“按标准升级步骤”试试先!
引用 284cc 2024-10-31 16:58
按标准升级步骤升级不会导致密码错误无法登录,出现无法登录都是没按要求操作,导致数据库表结构还没升级时,密码就被更新覆盖
引用 44f6fa4f5 2024-10-31 16:45
至于简单一步的“反向操作”,即直接把对应两个用户表中的admin的密码字段从新数据库copy到旧数据库中…… 我估计也能行!我在操作时,并不明确这个原由…… 同时也担心其它数据表或啥session或cookies啥的干扰…… 所以才用了这样的笨方法!建议大伙多尝试,不非要向我这样笨!

查看全部评论(5)

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-12-17 13:28 , Processed in 0.089945 second(s), 18 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部