还原mysql数据库失败主因是未预先创建同名数据库;需在宝塔手动添加数据库,名称、字符集(如utf8mb4)、密码须与原库一致;备份文件若无create database语句,则不会自动建库。

MySQL 数据库还原失败:提示 Unknown database 或表不存在
宝塔定时备份还原时,直接恢复 .sql 文件却报错,大概率是因为没先创建同名数据库。宝塔的「数据库」页面里手动导入,底层调用的是 mysql 命令,但不会自动建库——它只执行 SQL 里的 CREATE TABLE,不执行 CREATE DATABASE(除非备份文件开头显式写了)。
- 检查你的备份文件开头是否有
CREATE DATABASE `xxx`;没有的话,还原前必须在宝塔「数据库」页点「添加数据库」,名称、字符集、密码要和原库一致 - 如果原库用的是
utf8mb4,新库也得选utf8mb4,否则可能乱码或导入中断 - 别用「phpMyAdmin 导入」界面拖文件——它对大文件(>2MB)容易超时或截断;优先用宝塔后台「数据库 → 选择库 → 导入」按钮,或命令行:
mysql -u root -p your_db_name
还原后网站打不开:mysqli_connect(): (HY000/1045) 或连接拒绝
不是数据没还原,而是程序配置还连着旧库名、用户名或密码。宝塔备份只管数据库内容,不管 PHP 项目里的 config.php、.env 这类配置文件。
- 确认站点根目录下配置文件(如
wp-config.php、.env)里的DB_NAME、DB_USER、DB_PASSWORD和你刚还原的数据库实际信息完全一致 - 特别注意:宝塔新建数据库时默认生成的用户名是
root+ 随机串(如root_abc123),不是单纯的root;密码也是独立设置的,和 MySQL root 密码无关 - 如果用的是宝塔「网站 → 设置 → 数据库」绑定功能,记得点「保存」——这个操作会自动改写
.env或配置文件,但仅限宝塔识别的主流框架(ThinkPHP、Laravel、WordPress)
定时备份没生效:计划任务显示「成功」但备份目录空
宝塔的「计划任务 → 数据库备份」只是生成一个 shell 脚本并加入 crond,真正执行靠系统级定时器。看起来成功,往往因为脚本权限不对、路径写死、或 MySQL 用户没导出权限。
- 进「计划任务」点对应条目右侧「日志」,看最后一行是不是
mysqldump: Got error: 1045—— 这说明备份脚本用的 MySQL 用户没SELECT权限,或密码错了 - 备份脚本默认用的是宝塔数据库列表里第一个「允许远程」的用户,不是 root;如果删过用户,脚本可能还在用已失效的账号
- 检查备份路径是否写成绝对路径,比如
/www/backup/database/,而不是相对路径或带中文的路径——宝塔脚本不处理空格和中文
从旧服务器迁移过来的 .sql 备份,在新宝塔上还原卡住或报语法错误
老环境可能是 MySQL 5.6,新宝塔装的是 MySQL 8.0,两者默认 SQL 模式不同(比如 STRICT_TRANS_TABLES、NO_ZERO_DATE),导致老备份里的某些写法(如零日期、隐式默认值)被拒绝。
- 还原前临时关闭严格模式:
SET SESSION sql_mode = '';,再执行导入(可在 phpMyAdmin 的「SQL」页先运行这句) - 或者用命令行加参数绕过:
mysql -u root -p --init-command="SET SESSION sql_mode=''" your_db_name - 如果备份里有
CREATE USER或GRANT语句(常见于全库 mysqldump),MySQL 8.0 默认禁用,得删掉或改成兼容写法










