Windows 11 上 MySQL 8.0 已经作为服务运行,导入 .sql 本质上就是用 mysql 客户端连上服务、把 SQL 文件喂进去。下面按“确认服务→建库→导入→排错”走一遍。

1. 确认 MySQL 服务在跑

  • 服务名通常是 MySQL80(安装版)或 MySQL,可在“服务”里看,或 CMD/PowerShell 查:
    1. sc query MySQL80
  • 没启动就起:
    1. net start MySQL80
    如果提示服务名不对,打开 services.msc 看实际名称,换成你的,例如 net start MySQL。
  • 默认安装路径一般是:
    1. C:\Program Files\MySQL\MySQL Server 8.0\bin
    配置文件常在 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini(ProgramData 是隐藏目录)。

如果直接输 mysql 提示“不是内部或外部命令”,要么进 bin 目录,要么把 bin 加到系统 PATH,要么用全路径。

2. 方式一:命令行一键重定向(最常用)

先确保目标库存在。如果 sql 文件里已经包含 CREATE DATABASE 和 USE,可跳过建库。

建库(示例用 utf8mb4):

  1. "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" -u root -p -e "CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"

导入:

  1. "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql" -u root -p --default-character-set=utf8mb4 mydb < D:\backup\mydb.sql

执行后会提示输入密码。如果 MySQL 不在本机默认端口,加 -h127.0.0.1 -P3306。

如果已经把 bin 加到 PATH,直接写:

  1. mysql -u root -p --default-character-set=utf8mb4 mydb < D:\backup\mydb.sql

3. 方式二:先登录再用 source(适合分步操作)

CMD/PowerShell:

  1. mysql -u root -p

进到 mysql 提示符后:

  1. CREATE DATABASE IF NOT EXISTS mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  2. USE mydb;
  3. SOURCE D:/backup/mydb.sql;

注意 Windows 路径在 source 里用正斜杠或双反斜杠,别用单反斜杠;路径尽量别带中文/空格,带空格整段加引号。

PowerShell 里 < 重定向也能用,但有时策略/引号更麻烦,交互 source 更稳。

4. 大文件 / 提速参数

  1. mysql -u root -p --default-character-set=utf8mb4 --max-allowed-packet=512M --net-buffer-length=16M mydb < D:\backup\big.sql

sql 文件开头可加(导入完再改回1):

  1. SET foreign_key_checks=0;
  2. SET unique_checks=0;
  3. SET autocommit=0;
  4. -- 导入内容
  5. COMMIT;
  6. SET foreign_key_checks=1;
  7. SET unique_checks=1;

5. 常见报错处理

  • ‘mysql’ 不是内部或外部命令:bin 没进 PATH,用全路径或 cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"。
  • Access denied:当前用户没权限,用 root 或给账号授权 CREATE/INSERT/DROP/ALTER;密码错也会报这个。
  • Unknown database:先建库再导入,或者确认 sql 里是否有 CREATE DATABASE+USE。
  • Unknown collation: utf8mb4_0900_ai_ci:这个目标如果是 MySQL 8.0 一般不会出现;若是把 8.0 导出的 sql 灌到 5.7/低版本,需要把文件里的 utf8mb4_0900_ai_ci 批量替换成 utf8mb4_unicode_ci 等。
  • 服务连不上 / Can’t connect:先看服务是否启动、netstat -ano | findstr 3306 看端口,服务属性里可查实际 my.ini 与端口。
  • 中文乱码:客户端和服务端都用 utf8mb4,导入加 --default-character-set=utf8mb4,sql 文件保存为 UTF-8 无 BOM。