一次 Discuz X3.2 切换数据库后无法登录的问题排查经历
来源:SegmentFault
时间:2023-01-24 19:00:58 194浏览 收藏
在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是数据库学习者,那么本文《一次 Discuz X3.2 切换数据库后无法登录的问题排查经历》就很适合你!本篇内容主要包括一次 Discuz X3.2 切换数据库后无法登录的问题排查经历,希望对大家的知识积累有所帮助,助力实战开发!
情景再现
我本人在阿里云有一台 ECS 云服务器,平时没事干喜欢在上面做各种服务器相关的实验,比如 Linux 系统下 Web 服务器的搭建,研究各种常见的 Web 服务器架构和运维方式。久而久之也懂得了不少东西,于是我的一位大学期间的老师(本人现在已毕业参加工作)就委托我帮忙搭建一个小的 Discuz 论坛,平日里方便她教学使用。
可是最近总听她反馈说网站访问起来很慢,希望我能优化优化。其实我也大概清楚这其中的情况,因为我多数情况只是用这台云服务器做各种各样的尝试,所以它的配置比较低:单核1G内存。不过,以前没有做过生产服务器,所以我觉得它的优化空间应该还是蛮大的,当然,平日里上班也比较忙,没有太多时间系统地学习服务器优化方面的东西,于是乎,我便想出了一个旁门左道的方法。
我是将整个论坛安装在一个 All In One 环境中的,也就是说一台服务器,一块硬盘,也没有经过分区什么的,Apache 和 MySQL 也是直接装在上面就开始跑了。这样下来,长此以往,1G的内存想必只能撑住这两个主力军的运行,想要速度快恐怕得做点文章了。那么,优化从哪里入手呢,我估计说出来大家都会说我这样也好意思拿出来说叫优化。不过能解决问题的方法就是好方法,不是吗?
也不知道我是怎么想到这招的:在阿里云官方申请了一个免费的云数据库 RDS,把我论坛的数据库导出到这台免费的云数据库上,然后再把云服务器上的 MySQL 服务停掉,这样做的后果是:服务器内存使用率瞬间降下来了!哈哈,只跑一个 Apache 还是够够的啦,毕竟咱的网站不大。
然而,程序员仿佛永远身处于 BUG 的漩涡中无法自拔:一切随之而来的由数据库切换导致的问题摆在了我的面前,怎么办?版本回退?这可不是我的风格。出问题不怕,解决就是了!
啥情况:直接无法登录了!
进入到网站的主页,尝试登录,输入用户名密码,点击登录,没有反应,也不报错;刷新页面,再次尝试登录,报了一个错:“系统内部错误,在此处无法完全显示”,嗯?这是什么鬼?!
凭我工作时候遇到过的问题分析:
没有直接弹出错误页面,但是页面也没有任何跳转,也没提示数据库连接失败,那么,应该是尝试连接了数据库,但是没有连上。那么,没有连上数据库为什么不报错呢?为什么只给了一个弹出层:系统内部错误。一种可能性是数据库服务没启动,连接自然不成功,可是我把数据库连接转到另一个数据库了呀,阿里云数据库是支持外网连接的。
等一等,会不会是忘了改 Discuz 下面的配置文件,额,我相信熟悉这个论坛搭建的人都知道数据库连接是有个配置文件的吧,而且肯定知道切换数据库是要修改那个配置文件的吧:
/xxx/xxx/xxx/config/config_global.php(/xxx/xxx/ 是网站内容放置的绝对路径)。
试一试再将云服务器上的 MySQL 服务启起来,诶?启起来居然可以登录了!可是我已经修改过数据库连接指向了呀,和这个服务启不启有什么关系呢?再关掉 MySQL 服务,又不能登录了。到这里,唯一能确定的就是和 MySQL 的连接有关系。
【分析】:Discuz 登录时会做两次身份校验,一次是在它本身的数据表中,还有一次是在 UC_Center 的数据表中,会不会是我只改了
config_global.php这个配置文件,而没有修改 UC_Center 相关的数据库配置文件?
【尝试】:进入到 Discuz 配置文件目录
cd /xxx/xxx/xxx/config,仔细一看,果然还有个配置文件
config_ucenter.php静静地躺在那里,不用说,这个文件肯定和 UC_Center 的数据库配置相关了,打开修改掉相应的数据库配置项即可,具体有以下这几项:
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', 'dzroot');
define('UC_DBNAME', 'discuzx');
define('UC_DBTABLEPRE', '`discuzx`.ucenter_'); (注意别忘了这一项)
【结果】:OK,至此你的论坛已经可以成功登录了。
等一等:这样真的就OK了吗?
当你想要以管理员的身份登录到后台管理中心时,你会被眼前的一幕而震惊:
Error: Can not connect to the MySQL server
Errorno: xxxxx
纳尼?!刚才不是已经改过数据库配置文件了吗?两个配置文件都已经改过了呀,怎么还会报这个错误呢?!
【分析】:既然上面提到的两个配置文件都已经做了对应的修改,这里登录后台还会报数据库连接错误,那么有一种情况,就是 UC_Center 对于后台管理中心有一套另外的数据库配置文件,到底是不是这么回事呢?
【尝试】:在对应的 uc_client 和 uc_server 目录下搜索配置文件,看能否挖掘出额外的配置文件,使用
find命令:
find /xxx/uc_client -name config_*.php,没有搜索到;再到另一个目录:
find /xxx/uc_server -name config_*.php;惊喜总在一瞬间:
uc_server/data/config.inc.php。
【方法】:打开
uc_server/data/config.inc.php文件,将其中对应的数据库配置部分修改成对应正确的数据库配置。
【结果】:再次尝试登录后台管理中心,大功告成!
到这里,我们也就讲完了《一次 Discuz X3.2 切换数据库后无法登录的问题排查经历》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
475 收藏
-
483 收藏
-
462 收藏
-
469 收藏
-
289 收藏
-
239 收藏
-
315 收藏
-
361 收藏
-
184 收藏
-
227 收藏
-
202 收藏
-
140 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 土豪的丝袜
- 这篇文章内容太及时了,大佬加油!
- 2023-02-20 02:32:04
-
- 无限的咖啡豆
- 太全面了,码起来,感谢博主的这篇文章,我会继续支持!
- 2023-02-15 20:11:49
-
- 怕孤独的乌龟
- 这篇博文太及时了,作者大大加油!
- 2023-02-13 10:20:29
-
- 开心的树叶
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢作者分享博文!
- 2023-02-13 02:55:43
-
- 俊逸的日记本
- 这篇文章内容出现的刚刚好,太全面了,赞 👍👍,码起来,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-02-11 14:17:56
-
- 正直的帆布鞋
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢up主分享技术贴!
- 2023-02-09 21:41:15
-
- 踏实的长颈鹿
- 这篇文章内容真及时,很详细,赞 👍👍,码起来,关注作者大大了!希望作者大大能多写数据库相关的文章。
- 2023-02-07 22:00:16
-
- 寂寞的外套
- 太详细了,已收藏,感谢楼主的这篇技术贴,我会继续支持!
- 2023-01-30 02:26:28