第一步:检查并修正数据库配置文件
这是最核心、最有可能出错的地方,DedeCMS 的数据库连接信息存储在 /data/common.inc.php 文件中。

(图片来源网络,侵删)
-
找到配置文件
- 通过 FTP 或主机的文件管理器,进入您的网站根目录。
- 找到
data文件夹。 - 在
data文件夹中找到common.inc.php文件。
-
检查文件内容
- 用文本编辑器(如 Notepad++, VS Code, Sublime Text 等,不要用记事本)打开
common.inc.php文件。 - 您会看到类似下面这样的代码块:
<?php //数据库连接信息 $cfg_dbhost = 'localhost'; //数据库主机 $cfg_dbname = 'your_database_name'; //数据库名 $cfg_dbuser = 'your_username'; //数据库用户名 $cfg_dbpwd = 'your_password'; //数据库密码 $cfg_dbprefix = 'dede_'; //数据表前缀 $cfg_db_language = 'gbk'; //数据库语言版本 ... ?>
- 用文本编辑器(如 Notepad++, VS Code, Sublime Text 等,不要用记事本)打开
-
核对并修正信息
$cfg_dbhost(数据库主机):- 大多数情况下是
localhost。 - 如果您的网站和数据库不在同一台服务器上,这里可能是服务器的 IP 地址或域名,请咨询您的主机服务商。
- 大多数情况下是
$cfg_dbname(数据库名):这是您在创建数据库时给数据库起的名字,请确保完全正确,包括大小写。
(图片来源网络,侵删)$cfg_dbuser(数据库用户名):这是您授权连接该数据库的用户名,请确保完全正确。
$cfg_dbpwd(数据库密码):- 这是对应用户的密码。特别注意,有些数据库密码可能包含特殊字符(如 , , , ),如果密码里有反斜杠
\,需要用双反斜杠\\转义,这是最容易出错的地方。
- 这是对应用户的密码。特别注意,有些数据库密码可能包含特殊字符(如 , , , ),如果密码里有反斜杠
$cfg_dbprefix(数据表前缀):- 请确保这里的前缀和您数据库里实际的表前缀一致,如果您的表是
phpcms_开头的,但这里写的是dede_,就会出错。
- 请确保这里的前缀和您数据库里实际的表前缀一致,如果您的表是
-
保存文件
修改完毕后,保存文件,并尝试重新登录后台。
第二步:检查数据库服务器状态
如果配置文件信息无误,那么问题可能出在数据库服务器本身。
- 使用 PHP 测试连接
- 在网站根目录创建一个名为
test_db.php的文件,内容如下:<?php $dbhost = 'localhost'; // 和 common.inc.php 里的一样 $dbuser = 'your_username'; // 和 common.inc.php 里的一样 $dbpwd = 'your_password'; // 和 common.inc.php 里的一样 $dbname = 'your_database_name'; // 和 common.inc.php 里的一样 $link = mysqli_connect($dbhost, $dbuser, $dbpwd, $dbname); if (!$link) { echo "数据库连接失败!错误信息: " . mysqli_connect_error(); } else { echo "数据库连接成功!"; } mysqli_close($link); ?> - 将此文件上传到网站根目录,然后在浏览器中访问
http://您的域名/test_db.php。 - 如果显示“连接失败”,说明问题出在数据库服务器、用户权限或防火墙上,请看下面的第三步。
- 如果显示“连接成功”,说明数据库连接本身没问题,请返回第一步,仔细检查
common.inc.php文件中的每一个字符,特别是密码和前缀。
- 在网站根目录创建一个名为
第三步:检查数据库用户权限
即使用户名和密码正确,该用户可能没有被授予访问指定数据库的权限。
-
登录数据库管理工具
- 通常主机商会提供一个数据库管理界面,cPanel 里的 phpMyAdmin,或者 宝塔面板 里的数据库管理。
- 使用您的数据库管理员账号(通常是您在购买主机时设置的)登录。
-
检查用户权限
- 在 phpMyAdmin 中,点击顶部的“权限”或“用户账户”选项卡。
- 找到您在
common.inc.php中配置的那个数据库用户名。 - 点击该用户名后面的“编辑权限”。
- 在“数据库专有权限”部分,检查是否为您的数据库名(
$cfg_dbname)勾选了“全部权限”或至少包含了SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,DROP,INDEX等核心权限。 - 如果没有,请勾选“全部权限”并执行。
第四步:检查文件权限
data 目录或 common.inc.php 文件的权限设置不正确,导致 PHP 无法读取配置文件。
-
检查
data目录权限data目录通常需要设置为 755。- 在 Linux 命令行中可以使用
chmod 755 data。 - 在 FTP 客户端或文件管理器中,右键 -> 权限 -> 勾选所有者“读取、写入、执行”,组和其他用户“读取、执行”。
-
检查
common.inc.php文件权限common.inc.php文件通常需要设置为 644。- 在 Linux 命令行中可以使用
chmod 644 data/common.inc.php。 - 在 FTP 客户端或文件管理器中,右键 -> 权限 -> 勾选所有者“读取、写入”,组和其他用户“读取”。
第五步:检查数据库是否被锁定或损坏
-
检查数据库是否存在
- 在 phpMyAdmin 中,查看左侧的数据库列表,确认您的数据库名 (
$cfg_dbname) 是否还存在,有时候数据库可能会被误删。
- 在 phpMyAdmin 中,查看左侧的数据库列表,确认您的数据库名 (
-
检查数据库表是否存在
- 点击您的数据库名,查看右侧的表列表,确认所有表(如
dede_admin,dede_arctype等)都存在,如果表全部消失,说明数据库被清空或重置了。
- 点击您的数据库名,查看右侧的表列表,确认所有表(如
-
修复数据库
如果怀疑数据库表损坏,可以在 phpMyAdmin 中选中所有表,然后在下拉菜单中选择“修复表”。
第六步:检查 PHP 和 MySQL 版本兼容性
- PHP 版本过低: 如果您使用的 PHP 版本过低(如 PHP 5.6),而 DedeCMS 版本较新,可能会导致
mysqli函数不被支持或出现不兼容问题。 - MySQL 版本过低: 同样,过低的 MySQL 版本也可能导致问题。
- 解决方案: 登录您的主机控制面板,将 PHP 版本升级到一个较新的稳定版本(如 PHP 7.4 或 8.0,具体取决于您的 DedeCMS 版本是否支持)。
第七步:检查数据库连接端口
- 默认情况下,MySQL 使用
3306端口,如果您的数据库服务器使用了非标准的端口,localhost可能无法连接。 - 解决方法: 修改
$cfg_dbhost的值,在后面加上端口号,$cfg_dbhost = 'localhost:3307';,请咨询您的主机服务商确认正确的端口。
总结与排查顺序
建议按照以下顺序进行排查,这样效率最高:
- 首选:检查
/data/common.inc.php文件,90% 的问题出在这里,仔细核对主机名、数据库名、用户名、密码和表前缀。 - 创建
test_db.php文件测试连接,如果失败,问题在数据库服务器、权限或防火墙。 - 检查数据库用户权限,确保用户有对指定数据库的全部操作权限。
- 检查文件权限,确保
data目录是 755,common.inc.php文件是 644。 - 检查数据库是否存在、表是否损坏,以及 PHP/MySQL 版本兼容性。
如果以上所有步骤都无法解决问题,请提供以下信息,以便更精确地定位问题:
- 您使用的 DedeCMS 版本号。
- 错误信息的具体内容(后台登录时弹出的提示,或者页面上的具体错误代码)。
- 主机服务商类型(如阿里云、腾讯云、西部数码、或虚拟主机服务商)。
- 数据库主机是
localhost还是 IP 地址。
