MySQL8 和老版本 MySQL5.7 安装差别比较大,最核心变化就是默认认证插件改成 caching_sha2_password,很多老客户端比如 Navicat 旧版本连接会报错,这个是安装之后最容易踩坑的点。本教程采用免安装压缩包方式,也是学习 JavaWeb、MyBatis 项目最常用的方式,不需要图形化安装向导,手动配置 my.ini,初始化数据库,注册 Windows 系统服务,全程命令行操作,适合 MyEclipse IDEA 开发环境配套使用。如果你想图形化安装,也可以下载 MSI 安装包,原理大同小异,本教程优先讲解压缩包版本,灵活度更高。
安装前准备清单
1 官网下载 mysql-8.0.x-winx64.zip 压缩包
2 电脑是 64 位 Windows 系统,Win10 Win11 都支持
3 记住安装路径,路径不要带中文空格,推荐 D:\mysql\mysql-8.0
4 提前卸载旧版本 MySQL,避免端口 3306 冲突
详细安装步骤
第一步 解压压缩包
把 zip 包解压到纯英文目录,不要放在桌面中文文件夹,解压之后目录里面有 bin 文件夹,里面存放 mysql.exe mysqld.exe 核心程序
第二步 新建配置文件 my.ini
在 mysql 根目录新建 my.ini,写入基础配置
[mysqld]
端口号
port=3306
mysql根目录
basedir=D:/mysql/mysql-8.0
数据目录
datadir=D:/mysql/mysql-8.0/data
字符集
character-set-server=utf8mb4
default-storage-engine=INNODB
重点:路径使用斜杠 /,不要用反斜杠,utf8mb4 是 MySQL8 推荐字符集,支持 emoji,不要再用旧 utf8
第三步 管理员打开 CMD 命令提示符
一定要右键以管理员身份运行 CMD,否则注册服务会权限报错
切换目录到 bin 文件夹
cd D:\mysql\mysql-8.0\bin
第四步 初始化数据库
执行初始化命令,会自动生成 data 文件夹
mysqld --initialize --console
执行完成之后控制台会打印临时 root 密码,一定要复制保存这个临时密码,后面登录要用,丢失只能删除 data 目录重新初始化
第五步 注册 MySQL 系统服务
mysqld --install MySQL8
提示 Service successfully installed 代表注册成功
第六步 启动 MySQL 服务
net start MySQL8
第七步 登录 MySQL 并且修改 root 密码
mysql -u root -p
输入刚才保存的临时密码,登录成功之后执行修改密码语句
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的新密码';
如果需要兼容旧 Navicat,可以改成 mysql_native_password 认证插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
第八步 验证安装成功
执行
select version();
能正常输出版本号,代表 mysql8 安装完成
常用管理命令对照表
| 命令 | 作用 |
|---|---|
| net start MySQL8 | 启动 mysql8 服务 |
| net stop MySQL8 | 停止 mysql8 服务 |
| mysqld --remove MySQL8 | 卸载 mysql8 系统服务 |
| mysql -u root -p | 登录 mysql8 |
高频踩坑点清单
1 没有管理员权限运行 CMD,注册服务失败
2 my.ini 路径中文或者空格,初始化报错
3 初始化临时密码没有保存,后续无法登录
4 3306 端口被占用,旧 MySQL 或者其他软件占用端口,需要改 my.ini 里面 port
5 旧版 Navicat 连接 mysql8 报错,就是认证插件不兼容,改成 mysql_native_password
6 data 文件夹已经存在,再次 initialize 会报错,初始化前 data 目录必须是空的
补充 MSI 图形安装包方式简要说明
如果选择 MSI 安装包,双击下一步,选择 Server only,设置 root 密码,勾选开机自启,向导会自动初始化和注册服务,优点简单,缺点自定义配置不如压缩包灵活。
学习配套建议
mysql8 安装完成之后,就可以搭配 IDEA MyEclipse JDBC MyBatis SSM 项目开发,JDBC 连接 url 写法要带上时区参数
jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
MySQL8 必须增加 serverTimezone 时区参数,不然 JDBC 连接直接报错,这个是 Java 开发高频坑。
【常见问题】
问题 1 mysql8 初始化之后临时密码找不到怎么办
回答 1 mysql8 初始化临时密码丢失,需要停止服务,删除整个 data 文件夹,重新执行 mysqld --initialize --console 重新生成临时密码。
问题 2 mysql8 启动提示 3306 端口被占用怎么解决
回答 1 mysql8 端口占用,可以打开 my.ini 修改 port 改成 3307,或者找到占用 3306 的进程关闭,然后重启 mysql8 服务。
问题 3 Navicat 连接 mysql8 报错插件不兼容
回答 1 mysql8 默认是 caching_sha2_password,旧 Navicat 不支持,执行 sql 改成 mysql_native_password 认证插件即可解决 mysql8 连接报错。
问题 4 mysql8 和 mysql5.7 可以同时安装吗
回答 3 mysql8 和 mysql5.7 可以共存,但是必须使用不同端口,比如 mysql5.7 用 3306,mysql8 使用 3307,并且注册不同名称系统服务。
【免责申明】
本教程为 Windows 平台 MySQL8.0 通用安装教学,不同小版本参数可能存在细微差异,生产环境部署请参考官方文档,生产环境不要直接使用 root 远程开放权限,注意安全加固。


