WP网站数据库迁移教程:零基础也能安全操作
WP网站数据库迁移教程:零基础也能安全操作
什么时候需要迁移数据库?
WordPress网站的核心数据(文章、用户、设置、评论)全部存储在数据库中。
当你更换服务器、更换域名、从本地搬到线上或需要恢复备份时,都需要执行一次数据库迁移。
简而言之,只要网站的数据库文件需要从一处转移到另一处,就离不开本教程涉及的操作。
迁移前必须准备的 3 样东西
在动手之前,请确保已经准备好以下三项:
- 数据库访问权限:你需要知道原数据库的主机地址(通常是 localhost)、用户名、密码和数据库名。如果用的是宝塔面板,登录面板后进入“数据库”菜单即可看到。
- 网站文件备份:虽然本教程只讲数据库,但建议同时备份
wp-config.php文件,因为里面包含了数据库连接信息。 - 新环境的数据库空库:在目标服务器上先创建一个空数据库(名称随意),并记下新建的数据库用户名和密码。
方法一:使用 phpMyAdmin 可视化迁移(推荐新手)
绝大多数主机商或宝塔面板都预装了 phpMyAdmin。
这是最直观的方式,全程无需接触命令行。
1. 导出原数据库
- 登录原服务器的 phpMyAdmin(宝塔面板 -> 数据库 -> 管理)。
- 点击左侧的数据库名称(即你的 WordPress 数据库)。
- 点击顶部导航栏的“导出”选项卡,选择“快速”导出格式,格式保持
SQL,点击“执行”。 - 系统会自动下载一个
.sql文件,这就是你的数据库备份。
2. 导入到新数据库
- 登录目标服务器的 phpMyAdmin,选择刚创建的空数据库。
- 点击顶部“导入”选项卡,点击“选择文件”,选中刚才下载的
.sql备份。 - 其他选项保持默认,点击“执行”。如果文件较大,可能需要耐心等待几十秒。
3. 修改 wp-config.php 中的数据库连接
找到 WordPress 根目录下的 wp-config.php 文件,将以下三行改为新数据库的信息:
define('DB_NAME', '新数据库名');
define('DB_USER', '新数据库用户名');
define('DB_PASSWORD', '新数据库密码');
如果新数据库的主机地址不是 localhost(例如某些云数据库),还需要修改 DB_HOST 的值。
方法二:使用命令行迁移(适合有大文件或需要批量操作)
当数据库超过 50MB 时,phpMyAdmin 可能会超时,此时用 SSH 命令行更可靠。
1. 导出原数据库
SSH 登录原服务器,执行:
mysqldump -u 原用户名 -p 原数据库名 > wp_backup.sql
按提示输入密码,当前目录就会生成 wp_backup.sql。
2. 传输文件到新服务器
可以用 scp 或 FTP 将 wp_backup.sql 上传到目标服务器的任意目录。
3. 导入到新数据库
SSH 登录目标服务器,执行:
mysql -u 新用户名 -p 新数据库名 < wp_backup.sql
输入密码后等待完成,通常几秒内结束。
4. 同样修改 wp-config.php 文件
与第一种方法完全一致,修改数据库连接信息。
迁移后如何验证网站正常?
访问网站首页和后台(/wp-admin),检查以下内容:
- 首页能否正常打开,文章、页面、图片是否显示完整?
- 尝试发布一条新文章或修改已有文章,保存后是否成功?
- 检查插件设置是否丢失?如果有,可能需要重新保存一次。
- 如果更换了域名,还需进入后台“设置 -> 常规”更新站点地址和 WordPress 地址(WordPress 地址)。
常见报错与解决办法
1. 数据库连接错误(Error establishing a database connection)
原因:wp-config.php 中的数据库名、用户名或密码填写错误,或者数据库主机地址不对。
解决:核对 phpMyAdmin 里显示的数据库信息,并确认服务器是否允许远程连接。
2. 导入时提示“禁止访问”或超出上传限制
原因:phpMyAdmin 限制了文件上传大小(常见 2MB~50MB)。
解决:改用命令行导入,或者到宝塔面板的“软件商店” -> phpMyAdmin 的设置中调大 upload_max_filesize 和 post_max_size。
3. 首页正常但后台白屏
原因:数据库中的 siteurl 和 home 字段还是旧的域名。
解决:登录 phpMyAdmin,打开 wp_options 表,找到 siteurl 和 home 两条记录,将值改为新域名或新 IP。
4. 菜单、小工具或主题设置丢失
原因:部分主题或插件的序列化数据在迁移时未正确更新。
解决:使用 Better Search Replace 插件或 wp-cli search-replace 命令,将旧域名替换为新域名(仅替换数据库内容,不要手动替换序列化字符串)。
避坑说明(一定要看)
- 不要直接编辑 SQL 文件:除非你非常清楚序列化数据(serialized data)的结构,否则用文本编辑器修改 SQL 文件中的域名会导致数据损坏。推荐使用专用工具进行搜索替换。
- 迁移前一定要关闭缓存插件:导出数据库之前,先清空所有缓存插件的缓存,否则可能导出版本过期的数据。
- 新老环境 PHP 版本尽量一致:不同 PHP 版本可能影响数据库字符集编码,导致乱码。建议在迁移后检查网站字符集是否正常(
utf8mb4是推荐设置)。 - 先用临时域名测试:不要直接在生产环境上操作,先搭建一个只属于新域名的临时站点来测试迁移结果。
如果你正在处理 WP 网站数据库迁移,建议先按以上步骤完整执行一遍,遇到异常时优先回看本教程的常见报错和避坑部分。
掌握这套方法后,无论是更换服务器还是恢复备份,你都能从容应对。