核心原理
两个织梦站点共用一个数据库,其核心在于数据隔离,织梦的数据库设计非常清晰,很多数据都通过特定的前缀(如 dede_)来区分,实现共用的关键在于:

(图片来源网络,侵删)
- 表前缀不同:两个站点在数据库中必须使用不同的表前缀,一个使用
dede_,另一个使用dede_test_。 - 数据隔离:通过不同的表前缀,确保两个站点的数据(如文章、栏目、会员、模型等)互不冲突。
- 配置文件修改:修改第二个站点的配置文件
data/common.inc.php,使其连接到同一个数据库,但使用不同的表前缀。
详细操作步骤
假设你已经有两个织梦网站的源码,分别位于服务器的不同目录,
- 主站(正式站):
/wwwroot/site1 - 副站(测试站/子站):
/wwwroot/site2
第一步:安装主站(或确认主站已安装)
- 正常安装第一个织梦站点(
/wwwroot/site1)。 - 安装完成后,记录下其数据库信息:
- 数据库名:
dede_db - 用户名:
db_user - 密码:
db_password - 表前缀:
dede_(这是默认值)
- 数据库名:
你的数据库里有一系列以 dede_ 开头的表,如 dede_archives, dede_arctype, dede_member 等。
第二步:安装副站(关键步骤)
-
上传源码:将织梦的源码上传到副站的目录
/wwwroot/site2。 -
修改配置文件:在访问安装程序之前,请务必修改副站的配置文件。
(图片来源网络,侵删)- 打开
/wwwroot/site2/data目录。 common.inc.php文件不存在,说明你上传的源码不完整,请重新上传完整的织梦程序包,织梦安装时会自动生成这个文件。- 编辑
common.inc.php文件,找到数据库配置部分,将其修改为与主站相同的数据库名、用户名和密码,但必须修改表前缀。
// 副站 (site2) 的 data/common.inc.php 文件内容示例 <?php //数据库连接信息 $_cfg['db_host'] = 'localhost'; // 数据库服务器 $_cfg['db_user'] = 'db_user'; // 数据库用户名 $_cfg['db_pass'] = 'db_password'; // 数据库密码 $_cfg['db_name'] = 'dede_db'; // 数据库名 (与主站相同) $_cfg['db_prefix'] = 'dede_test_'; // 表前缀 (与主站不同!这是关键) $_cfg['db_pconnect'] = 0; $_cfg['db_charset'] = 'utf8mb4'; ?>
- 打开
-
运行安装程序:通过浏览器访问副站的安装程序,通常是
http://你的域名/site2/install/index.php。 -
进行安装:按照安装向导进行操作,在“数据库配置”步骤,安装程序会自动读取你刚刚修改的
common.inc.php文件,你只需确认信息无误即可。 -
完成安装:安装程序会根据
dede_test_这个前缀,在同一个dede_db数据库里创建一套全新的数据表(如dede_test_archives,dede_test_arctype等)。
第三步:验证与后续设置
- 访问站点:安装成功后,你就可以分别访问
site1和site2了,你会发现它们是两个完全独立的网站,拥有各自的后台和内容。 - 检查数据库:登录你的数据库管理工具(如 phpMyAdmin),你会看到数据库里既有
dede_开头的表,也有dede_test_开头的表,数据完全分离。 - 内容同步(可选):如果你希望将主站的内容同步到副站(用于测试),你不能直接复制数据库,因为表前缀不同,正确的做法是:
- 在主站后台的【系统】->【数据备份/还原】中,表(如
dede_archives,dede_arctype,dede_addonarticle等)。 - 在副站后台的【系统】->【数据备份/还原】中,选择从服务器恢复,然后选择刚刚备份的SQL文件。
- 在恢复前,务必勾选“前缀替换”选项,并将
dede_替换为dede_test_,这样SQL语句在执行时会自动将表名修改为副站的前缀,从而正确导入数据。
- 在主站后台的【系统】->【数据备份/还原】中,表(如
潜在风险与注意事项
虽然技术上可行,但这种方法也存在一些风险和限制:

(图片来源网络,侵删)
-
插件和模块冲突:
- 如果两个站点安装了同一个插件,而这个插件在数据库中创建了自定义表(不以
dede_开头),那么这些表会发生冲突,导致数据混乱。 - 解决方案:为副站使用不同的插件,或者确保插件使用的表名也带有特定前缀。
- 如果两个站点安装了同一个插件,而这个插件在数据库中创建了自定义表(不以
-
附件和图片路径问题:
- 织梦的附件、图片等在数据库中存储的是相对路径(如
/uploads/allimg/20251027/123456.jpg)。 - 如果两个站点的上传目录结构不同,或者域名不同,直接同步数据可能会导致图片/附件无法显示。
- 解决方案:在同步数据后,可能需要使用织梦的数据库批量替换功能,将路径中的旧目录名替换为新目录名。
- 织梦的附件、图片等在数据库中存储的是相对路径(如
-
数据备份与恢复复杂化:
- 备份时需要特别注意,是备份整个数据库还是特定前缀的表。
- 恢复时也必须小心,避免错误地覆盖另一个站点的数据。
-
性能影响:
虽然共享数据库可以节省资源,但如果两个站点都流量巨大,可能会对数据库造成较大压力。
更佳的实践方案:多站点独立数据库
对于绝大多数生产环境,强烈推荐为每个站点使用独立的数据库。
为什么推荐独立数据库?
- 绝对安全:数据完全隔离,一个站点的操作(如误删表、插件出错)不会影响到另一个站点。
- 管理简单:备份、恢复、迁移、优化都非常清晰,只需操作对应数据库即可。
- 权限控制:可以为每个站点分配独立的数据库用户,并给予其仅限操作自身数据库的权限,安全性更高。
- 避免冲突:完全杜绝了插件、自定义表等所有潜在的冲突问题。
如何实现独立数据库?
- 创建新数据库:在你的数据库管理系统中(如 phpMyAdmin 或 cPanel/Plesk),为副站创建一个新的数据库,
dede_db_test。 - 创建新用户:为这个新数据库创建一个专用的数据库用户,
db_user_test,并设置密码。 - 授权用户:将
db_user_test用户授权访问dede_db_test数据库。 - 安装副站:正常安装副站,在安装过程中,填写新的数据库名
dede_db_test、新用户名db_user_test和新密码即可,副站会拥有自己独立的、以dede_为前缀的数据表。
| 方案 | 共用一个数据库 | 独立数据库 |
|---|---|---|
| 优点 | 节省数据库资源,方便在开发/测试环境快速复制数据 | 绝对安全、管理简单、无冲突、权限清晰 |
| 缺点 | 有数据冲突风险、插件可能不兼容、管理复杂、性能可能受影响 | 资源消耗略高(但通常影响不大) |
| 适用场景 | - 快速搭建测试环境,与主站数据强关联。 - 严格的资源限制环境(不推荐生产环境)。 |
所有生产环境、需要高安全性和稳定性的项目、多租户系统。 |
- 学习和测试:如果你只是想快速搭建一个和主站数据一样的测试环境,共用数据库是一个快捷的方法。
- 正式项目/生产环境:请务必选择独立数据库方案,这是最安全、最稳定、最专业的做法,可以为你省去未来无数的麻烦。
