【无标题】

以下是从安装 MySQL 8.4.10 到完成数据迁移的完整总流程,已整合所有前期遇到的问题及解决方案。
全程内网可操作,无需联网。


一、准备工作(外网下载,一次完成)

  1. 在可上网的电脑上访问 MySQL Community Downloads
  2. 选择对应的版本,这里选择的是 8.4.10,下载 Windows (x86, 64-bit), ZIP Archive
  3. 将压缩包拷贝到内网目标机器。

二、安装 MySQL 8.4.10 新实例

1. 解压并创建必要目录(内网操作)

  • 解压到 D:\Program Files\MySQL\MySQL Server 8.4.10\
  • 手动创建以下文件夹(不会自动生成):
    D:\ProgramData\MySQL\MySQL Server 8.4.10\Data
    D:\ProgramData\MySQL\MySQL Server 8.4.10\logs
    D:\ProgramData\MySQL\MySQL Server 8.4.10\Uploads
    

2. 编写配置文件 my.ini

D:\Program Files\MySQL\MySQL Server 8.4.10\ 下新建 my.ini,内容如下(端口、路径、ID 均与旧实例不同):

[client]
port=3307

[mysql]
no-beep

[mysqld]
port=3307
basedir=D:/Program Files/MySQL/MySQL Server 8.4.10
datadir=D:/ProgramData/MySQL/MySQL Server 8.4.10/Data
server-id=2

character-set-server=utf8mb4
default-storage-engine=INNODB
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
lower_case_table_names=1

log-error=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/mysql_error.log
general_log=0
general_log_file=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/general.log
slow_query_log=1
slow_query_log_file=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/slow.log
long_query_time=10

log-bin=D:/ProgramData/MySQL/MySQL Server 8.4.10/logs/binlog

secure-file-priv=D:/ProgramData/MySQL/MySQL Server 8.4.10/Uploads

max_connections=151
table_open_cache=4000
innodb_buffer_pool_size=128M
innodb_redo_log_capacity=100M
# 可复制旧实例其他性能参数

3. 初始化数据库实例

管理员身份打开命令提示符:

cd /d "D:\Program Files\MySQL\MySQL Server 8.4.10\bin"
mysqld --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini" --initialize --console

屏幕最后一行会显示临时密码,务必立即记下,例如:

A temporary password is generated for root@localhost: o;wJq7<T1p

4. 安装 Windows 服务并启动(注意避免环境变量干扰)

必须使用绝对路径安装,否则可能调用了旧版 8.4.6 的 mysqld:

"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --install MySQL84_10 --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini"

提示 Service successfully installed. 后启动:

net start MySQL84_10

如果启动失败,查看日志:D:\ProgramData\MySQL\MySQL Server 8.4.10\logs\mysql_error.log

5. 修改 root 密码

mysql -u root -P 3307 -p

输入临时密码,执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;

备用:若忘记临时密码,可使用跳过权限验证方式重置(见附录)。


三、从旧实例导出数据(MySQL 8.4.6)

1. 创建备份存放目录

mkdir D:\ProgramData\MySQL\backup

2. 使用 mysqldump 导出(强烈建议用绝对路径,并设置字符集参数)

进入旧实例的 bin 目录或直接使用绝对路径:

"D:\Program Files\MySQL\MySQL Server 8.4\bin\mysqldump" -u root -P 3306 -p --all-databases --triggers --routines --events --set-gtid-purged=OFF --default-character-set=utf8mb4 --hex-blob --skip-extended-insert --result-file=D:\ProgramData\MySQL\backup\fulldump.sql

参数说明

  • --default-character-set=utf8mb4:避免乱码。
  • --hex-blob:将二进制字段转成十六进制,防止特殊字符干扰。
  • --skip-extended-insert:每条 INSERT 只插入一行,虽然文件变大,但能彻底避免导入时出现 Unknown command '\"' 等行首转义问题。如果数据量极大担心导入慢,可去掉此参数,但需承受可能出现的同类报错并手动修复。
  • --result-file:直接写文件,避免重定向时目录不存在的问题。

输入旧实例 root 密码后,备份文件会生成在 D:\ProgramData\MySQL\backup\fulldump.sql


四、向新实例导入数据(MySQL 8.4.10)

1. 导入 SQL 文件

"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysql" -u root -P 3307 -p --default-character-set=utf8mb4 < D:\ProgramData\MySQL\backup\fulldump.sql

输入新实例的 root 密码,等待导入完成。

如果之前未使用 --skip-extended-insert,导入时若出现 Unknown command '\...',需在 MySQL 内部用 source 命令,并可能需手动修复问题行。推荐直接用上述带 --skip-extended-insert 的参数重新导出一次,一劳永逸

2. 验证数据完整性

登录新实例:

mysql -u root -P 3307 -p

执行:

SHOW DATABASES;   -- 查看库是否全部存在
USE 某个库;
SELECT COUNT(*) FROM 某表;   -- 抽样核对行数

五、收尾与日常管理

  • 连接新实例:mysql -u root -P 3307 -p
  • 连接旧实例:mysql -u root -P 3306 -p
  • 停止新服务:net stop MySQL84_10
  • 卸载新服务(先停止):"D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --remove MySQL84_10

附录:忘记临时密码的解决办法

  1. 停止服务:net stop MySQL84_10
  2. 启动跳过权限模式(窗口挂起):
    "D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysqld" --defaults-file="D:\Program Files\MySQL\MySQL Server 8.4.10\my.ini" --skip-grant-tables --skip-networking
    
  3. 另开窗口无密码登录并改密码:
    "D:\Program Files\MySQL\MySQL Server 8.4.10\bin\mysql" -u root -P 3307
    
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    exit;
    
  4. Ctrl+C 结束跳过权限的窗口,然后 net start MySQL84_10

总结:整个流程的关键在于用绝对路径调用正确版本的 mysqld预先创建所有目录导出时使用完善的字符集和转义参数,即可在内网顺利安装并迁移数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vxstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值