前言
已安装MySQL5,然后安装MySQL8版本的
安装MySQL参考:
windows 同时安装 MySQL5 和 MySQL8 版本_mysql 8.0 和5.0可以同时安装吗-优快云博客
下载MySQL8msi出现的问题
检查Log,发现是初始化失败,如下:
Attempting to run MySQL Server with --initialize-insecure option...
Starting process for MySQL Server 8.4.0...
Starting process with command: D:\work\MySQL8\MySQL Server 8.4\bin\mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.4\my.ini" --console --initialize-insecure=on --lower-case-table-names=1...
mysqld: Can't create directory 'D:\work\MySQL8\MySQL Server 8.4\ProgramData\Data\' (OS errno 2 - No such file or directory)
MySQL Server Initialization - start.
D:\work\MySQL8\MySQL Server 8.4\bin\mysqld.exe (mysqld 8.4.0) initializing of server in progress as process 4676
The designated data directory D:\work\MySQL8\MySQL Server 8.4\ProgramData\Data\ is unusable. You can remove all files that the server added to it.
Aborting
MySQL Server Initialization - end. Process for mysqld, with ID 4676, was run successfully and exited with code 1. Failed to start process for MySQL Server 8.4.0.
Database initialization failed.
Ended configuration step: Initializing database (may take a long time)
错误消息表明,MySQL服务器初始化过程失败,因为它无法创建数据文件的目录。它尝试使用的目录路径不存在。
为了解决这个问题,需要执行以下操作(依据实际路径):
- 检查路径 D:\work\MySQL8\MySQL Server 8.4\ProgramData\Data\ 是否正确。如果不正确,需要更正它。
- 确保父目录 D:\work\MySQL8\MySQL Server 8.4\ProgramData\ 存在。如果不存在,需要手动创建它。
以下是纠正问题的步骤:
- 打开Windows资源管理器或命令提示符。
- 导航到 D:\work\MySQL8\MySQL Server 8.4\。
- 检查 ProgramData 文件夹是否存在。如果不存在,创建一个名为 ProgramData 的新文件夹。
- 在 ProgramData 文件夹内,创建一个名为 Data 的新文件夹。
- 同目录下,创建my.ini 配置文件,并且配置文件中有正确的 datadir 值指向刚刚创建的 Data 目录
- 创建必要的目录后,再次尝试执行选项运行MySQL服务器初始化。
my.ini:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3308端口
port = 3308
# 设置mysql的安装目录
basedir=D:\work\MySQL8\MySQL Server 8.4
# 设置mysql数据库的数据的存放目录(自动生成,不然可能报错)
datadir=D:\work\MySQL8\MySQL Server 8.4\ProgramData\data
# 允许最大连接数
max_connections=10000
# 允许最大连接人数
max_user_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 连接时间一年
wait_timeout=31536000
interactive_timeout=31536000
最后,以管理员身份在命令提示符进行验证
在任务管理器中可看到