第一步:检查最常见、最简单的错误原因
在修改任何代码之前,请先确认以下几点,因为它们是最容易犯也最容易被忽略的错误。

数据库用户名和密码错误
这是最常见的原因,请确保你在 data/common.inc.php 文件中填写的数据库用户名和密码与你的数据库实际设置完全一致。
- 区分大小写:很多数据库(尤其是在 Linux 系统上)是区分用户名和密码大小写的,请仔细核对。
- 特殊字符:如果你的密码包含 , , , ,
&等特殊字符,可能会导致连接字符串解析错误,如果可能,暂时修改为一个简单的字母数字密码进行测试。
数据库名称错误
请确认你填写的数据库名称是正确的。
- 前缀问题:如果你的虚拟主机提供商在创建数据库时会自动添加一个前缀(
yourname_),那么你的数据库名称可能不是dedecms,而是yourname_dedecms,请登录你的主机控制面板(如 cPanel, Plesk)或数据库管理工具(如 phpMyAdmin)查看正确的数据库名。
数据库主机地址错误
默认情况下,织梦数据库主机是 localhost,但有些虚拟主机或云服务器会使用不同的地址。
- 如何确认:登录你的主机控制面板,在“数据库”或“MySQL”设置中,你会找到正确的数据库主机地址,它可能是
localhost,也可能是0.0.1,或者是服务器的 IP 地址,甚至是mysql.yourhost.com这样的域名。
第二步:检查和修改配置文件
如果第一步没有解决问题,我们需要检查和修改核心配置文件。

定位并打开配置文件
织梦的数据库连接信息存储在网站根目录下的 data/common.inc.php 文件中。
- 使用 FTP 或文件管理器:通过 FTP 客户端(如 FileZilla)或主机控制面板的文件管理器,登录你的网站,找到并下载这个文件。
- 使用代码编辑器:用专业的代码编辑器(如 VS Code, Sublime Text, Notepad++)打开
common.inc.php文件,不要用记事本,以防编码问题。
检查并修正配置信息
找到文件中的以下几行代码,确保它们的值是正确的:
//数据库连接信息 $cfg_dbhost = 'localhost'; // 数据库主机地址 $cfg_dbname = 'dedecms'; // 数据库名称 $cfg_dbuser = 'root'; // 数据库用户名 $cfg_dbpwd = 'your_password'; // 数据库密码 $cfg_dbprefix = 'dede_'; // 数据库表前缀 $cfg_db_language = 'gbk'; // 数据库语言版本,通常为 gbk 或 utf8
- 逐行核对:将
$cfg_dbhost,$cfg_dbname,$cfg_dbuser,$cfg_dbpwd的值与你从主机商那里获取的、或在 phpMyAdmin 中看到的真实信息进行核对,确保一个字符都不差。 - 数据库前缀
$cfg_dbprefix:如果你的数据库表前缀不是默认的dede_(例如你安装时修改了它),请在这里填写正确的前缀。 - 数据库语言
$cfg_db_language:如果你的网站是 UTF-8 编码,但这里写的是gbk,反之亦然,可能会导致后续问题,请确保它与你的数据库和网站编码一致。
保存并上传
修改完成后,保存文件,然后通过 FTP 或文件管理器将其上传回原来的位置(覆盖原文件)。
第三步:检查数据库服务器权限
配置文件是正确的,但数据库用户没有连接到指定数据库的权限。
登录 phpMyAdmin
这是大多数虚拟主机提供的数据库管理工具,在你的主机控制面板中找到 "phpMyAdmin" 或 "数据库" 相关的入口并进入。
检查用户权限
- 在 phpMyAdmin 的左侧,选择你的数据库。
- 点击顶部的 "权限" 选项卡。
- 在用户列表中,找到你正在使用的数据库用户名(
root或yourname_user)。 - 点击该用户名后面的 "编辑权限" 链接。
- 在 "数据库专有权限" 部分,确保你的数据库名称出现在列表中,并且勾选了 "所有权限" 或至少包含了 "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "DROP", "ALTER", "INDEX" 等基本权限。
- 点击 "执行" 保存更改。
第四步:检查环境和服务问题
如果以上都正确,那可能是服务器环境的问题。
检查 MySQL 服务是否运行
连接失败可能是因为数据库服务本身没有启动。
- 虚拟主机用户:这种情况很少见,通常请联系你的主机服务商技术支持。
- VPS/云服务器/独立服务器用户:你需要登录服务器 SSH,检查 MySQL 服务状态。
- Linux 系统:运行
service mysql status或systemctl status mysql,如果服务未运行,尝试service mysql start或systemctl start mysql。 - Windows 系统:检查 "服务",找到 "MySQL" 服务,确保其状态为 "正在运行"。
- Linux 系统:运行
检查数据库端口
默认的 MySQL 端口是 3306,如果你的服务器修改了默认端口,你需要在 common.inc.php 中指定端口号。
修改 $cfg_dbhost 这一行,格式为 主机地址:端口号,
$cfg_dbhost = 'localhost:3307';
检查防火墙设置
服务器的防火墙可能阻止了数据库连接。
- 云服务器用户:检查你的云服务商(如阿里云、腾讯云)的安全组设置,确保入站规则中开放了 MySQL 的端口(默认是 3306)。
- 本地/服务器用户:检查系统防火墙(如
iptables,firewalld或 Windows 防火墙),确保允许 3306 端口的入站连接。
第五步:最后的尝试
如果所有方法都试过了,问题依旧存在,可以尝试以下操作。
重新上传 data 目录
有时 data 目录或其下的文件权限、所有者设置错误,会导致无法读取。
- 通过 FTP 删除服务器上的
data目录。 - 从你的织梦安装包中,重新上传一个全新的
data目录。 - 重要:上传后,将你之前修改好的
common.inc.php文件重新覆盖进去。 - 检查
data目录的权限,通常设置为755。
检查 PHP 版本兼容性
一个非常古老但常见的问题是,你使用的织梦版本可能与你服务器的 PHP 版本不兼容,织梦 5.7 对 PHP 7.x+ 的支持就不是很完美,而织梦 5.7 sp2 或更高版本则好很多。
- 检查方法:在网站根目录创建一个名为
info.php的文件,内容为<?php phpinfo(); ?>,然后在浏览器中访问它,查看当前的 PHP 版本。 - 解决方案:联系你的主机服务商,尝试切换到一个兼容的 PHP 版本(PHP 5.6 或 7.0)。
排查流程
请按照以下顺序进行排查,效率最高:
- 核对信息:检查
common.inc.php中的dbhost,dbname,dbuser,dbpwd是否 100% 正确(尤其注意大小写和特殊字符)。 - 检查权限:通过 phpMyAdmin 确认数据库用户有访问指定数据库的权限。
- 检查服务:确认 MySQL 服务正在运行,端口正确,防火墙未阻止。
- 重试安装:如果以上都无效,尝试重新上传
data目录,甚至可以尝试重新运行安装程序(注意备份数据库!)。 - 寻求支持:如果还是不行,最后一步是联系你的主机服务商技术支持,提供错误截图和你的配置信息,让他们协助排查服务器端的问题。
希望这个详细的指南能帮助你解决问题!
