“Mysql:安装(Windows)”的版本间差异

来自Wikioe
跳到导航 跳到搜索
 
(未显示同一用户的31个中间版本)
第1行: 第1行:
[[category:MySQL]]
[[category:MySQL]]
[[category:安装(Windows)]]


== 下载安装包 ==
== 下载安装包 ==
一般选择的是社区版(MySQL Community Server)的GA版本(正式发布版本、生产版本),链接[https://dev.mysql.com/downloads/mysql/ MySQL::Download MySQL Community Server]。<br/>
一般选择的是社区版(MySQL Community Server)的GA版本(正式发布版本、生产版本),链接 [https://dev.mysql.com/downloads/mysql/ MySQL:Download MySQL Community Server]。
: [[File:下载MySQL安装文件.jpg|600px]]


选择的安装文件:
 
# “mysql-xxx-win64.msi”:windows安装包,msi安装包是用'''msiexec'''安装完成的。windows下双击根据向导安装即可,简单方便。
安装文件类型:
# “mysql-xxx-win64.zip”:编译好的 windows 64 位 MySQL,文件解压缩后即可使用(需要手工配置)。
# “mysql-xxx-win64.msi”:windows 安装包,双击执行根据向导安装即可。
# “mysql-xxx.zip”:windows源文件,需要编译。
# “mysql-xxx.zip”:windows源文件,需要编译。
# “mysql-xxx-win64.zip”:编译好的windows64位MySQL,文件解压缩后即可使用(需要手工配置)。


[[File:下载MySQL安装文件.jpg|400px]]
== 安装 MySQL==
* 当前使用“mysql-5.7.33-winx64.zip”;
以 mysql-5.7.33-winx64.zip 为例。


== 安装 MySQL(mysql-5.7.33-winx64.zip)==
=== 解压缩软件包 ===
解压缩下载包,到文件夹(如“D:\Program Files\mysql-5.7.33-winx64”)


=== 配置环境变量===
安装步骤:
# 添加新变量“MYSQL_HOME”为“D:\Program Files\mysql-5.7.33-winx64”;
# 解压 MySQL 文件到目的目录;(如“D:\Program Files\mysql-5.7.33-winx64”)
# 在“path”变量中添加“%MYSQL_HOME%\bin”;
# 配置环境变量:
#: <syntaxhighlight lang="bash" highlight="">
MYSQL_HOME:D:\Program Files\mysql-5.7.33-winx64;


=== 添加配置文件 ===
path 添加:%MYSQL_HOME%\bin;
在MySQL文件夹中新建“my.ini”作为配置文件:
</syntaxhighlight>
* 用于配置MySQL的基础设置,如字符集、引擎、端口、安装目录、数据目录等。
# 新建配置文件“'''my.ini'''”:
<syntaxhighlight lang="xml">
#: <syntaxhighlight lang="yaml">
[mysql]   
[mysql]   
# 设置 mysql 客户端默认字符集   
# 设置 mysql 客户端默认字符集   
第29行: 第31行:
   
   
[mysqld]   
[mysqld]   
#设置 3306 端口   
# 设置 3306 端口   
port = 3306   
port = 3306   


# 设置 mysql 的安装目录   
# 设置 mysql 的安装目录   
basedir=C:\Program Files\mysql-5.7.23-winx64
basedir=D:\Program Files\mysql-5.7.23-winx64


# 设置 mysql 数据库的数据的存放目录   
# 设置 mysql 数据库的数据的存放目录   
datadir=C:\Program Files\mysql-5.7.23-winx64\data  
datadir=D:\Program Files\mysql-5.7.23-winx64\data  


# 允许最大连接数   
# 允许最大连接数   
第47行: 第49行:
default-storage-engine=INNODB
default-storage-engine=INNODB
</syntaxhighlight>
</syntaxhighlight>
#* 用于配置MySQL的基础设置,如字符集、引擎、端口、安装目录、数据目录等。
# 初始化数据库:
#: <syntaxhighlight lang="xml">
# 初始化命令
mysqld --initialize-insecure --user=mysql
</syntaxhighlight>
#: MySQL目录中多出一个“data”文件夹,包含了系统的默认数据库;
#* 如果使用“--initialize”还会生了一个随机的初始 root 密码。
# 安装服务:
#: <syntaxhighlight lang="xml">
# 将服务器安装为 Windows 服务,并设置服务为“自动启动”
mysqld -install [service_name]
# 将服务器安装为 Windows 服务,并设置服务为“手动启动”
mysqld --install-manual [service_name]
</syntaxhighlight>
#* 如果未提供“[service_name]”值,则默认服务名称为“MySQL”。
#* 第一次安装的话会显示“Service successfully installed.”;否则会显示“The service already exists! ...”
#*: [[File:安装服务.jpg|600px]]
# 验证安装:
#: <syntaxhighlight lang="xml">
# 查看MySQL版本
mysql --version
</syntaxhighlight>
#: [[File:查看MySQL版本.png|600px]]
=== 关于“初始化数据库” ===
安装 MySQL 之后,初始化数据库,包括 mysql 系统数据库中的表:
<syntaxhighlight lang="bash" highlight="">
mysqld --initialize --user=mysql [--console]


=== 初始化 ===
mysqld --initialize-insecure --user=mysql [--console]
*(cmd管理员进入MySQL目录)
执行初始化命令:
<syntaxhighlight lang="xml">
mysqld --initialize-insecure --user=mysql
</syntaxhighlight>
</syntaxhighlight>
用于数据目录初始化:建立默认的数据库(目录中多出一个“data”文件夹),用户名为“root”,密码为空。
# “--user=mysql”:以“mysql”身份运行该命令。
:[[File:MySQL初始化.jpg|400px]]
# “--console”:选项将消息定向到 Windows 控制台;否则将写入其标准错误输出:“错误日志”(data目录中后缀为“.err”的文件)。
# “--initialize”:进行“默认安全”的初始化,即:包括'''生成随机的初始root密码'''(可在错误日志中找到)。
#* 以 root 连接到服务器时,“'''<syntaxhighlight lang="xml" inline>mysql -u root -p</syntaxhighlight>'''”需要生成的临时密码;
#* 在这种情况下,密码被标记为'''已过期''',您将需要选择一个新密码;
# “--initialize-insecure”:执行初始化,但'''不会生成root密码'''。
#* 以 root 连接到服务器时,不使用密码登录“'''<syntaxhighlight lang="xml" inline>mysql -u root --skip-password</syntaxhighlight>'''”;
#* 这是不安全的;假定您在将服务器投入生产使用之前会及时为帐户分配密码;


* 使用“--user=mysql”旨在以“mysql”身份运行该命令;


* 当使用“--initialize”或“--initialize-insecure”选项调用时,mysqld在数据目录初始化序列期间执行以下操作:
<pre>
*: 服务器检查数据目录是否存在;
对于某些 MySQL 安装方法,数据目录初始化是自动的。(如在 Windows 上通过msi文件的自动化安装过程)
*# 如果不存在数据目录,则服务器将创建它。
 
*# 如果数据目录存在但不为空(即它包含文件或子目录),则服务器在生成错误消息后退出:
对于其他安装方法,必须手动初始化数据目录。(包括在 Unix 和类似 Unix 的系统上从通用二进制发行版和源代码发行版进行安装,以及在 Windows 上从 ZIP Archive 软件包进行安装)
*#: <syntaxhighlight lang="xml">
</pre>
 
初始化期间的服务器操作:'''服务器检查数据目录是否存在''':
# 如果不存在数据目录,则服务器将创建它。
# 如果数据目录存在但不为空(即它包含文件或子目录),则服务器在生成错误消息后退出:
#: <syntaxhighlight lang="xml">
[ERROR] --initialize specified but the data directory exists. Aborting.
[ERROR] --initialize specified but the data directory exists. Aborting.
</syntaxhighlight>
</syntaxhighlight>
#* 在这种情况下,请删除或重命名数据目录,然后重试。
* 首次安装 MySQL 之后才需要进行数据目录初始化;但,初始化数据目录的命令不会覆盖任何现有的 mysql 数据库表,因此在任何情况下都可以安全运行。


=== 安装 ===
== 多版本安装 ==
*(cmd管理员进入MySQL目录)
多版本共存时:
执行安装命令:
1、需要配置不同的环境变量。
<syntaxhighlight lang="xml">
2、配置文件中:需要指定不同端口“port”避免冲突;
mysqld -install
3、安装时,安装命令需要指定配置文件。
 
 
步骤:(以 5.7.35、8.0.27 为例)
# 解压 MySQL 文件到目的目录;
# 新建配置文件:
#: 分别在两个 MySQL 目录中新建“my.ini”:
#: <syntaxhighlight lang="xml" highlight="">
[mysqld]
# 设置端口
port=3306
# 设置 mysql 的安装目录
basedir=D:\Program Files\MySQL\mysql-5.7.35
# 设置 mysql 数据库的数据的存放目录
datadir=D:\Program Files\MySQL\mysql-5.7.35\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为 8 比特编码的 latin1 字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8
 
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
</syntaxhighlight>
</syntaxhighlight>
* “--install [service_name]”命令,将服务器安装为 Windows 服务(自动启动)。如果未提供“[service_name]”值,则默认服务名称为“MySQL”。
#: <syntaxhighlight lang="xml" highlight="">
* “--install-manual [service_name]”命令,将服务器安装为 Windows 服务(手动启动)。如果未提供“[service_name]”,则默认服务名称为“MySQL”。
[mysqld]
# 设置端口
port=3307
# 设置mysql的安装目录
basedir=D:\Program Files\MySQL\mysql-8.0.27
# 设置mysql数据库的数据的存放目录
datadir=D:\Program Files\MySQL\mysql-8.0.27\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 认证插件:默认使用“caching_sha2_password”,可选“mysql_native_password”
default_authentication_plugin=caching_sha2_password


[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4


* 第一次安装的话会显示“Service successfully installed.”;
[client]
*: 如果已经安装过了则会显示“The service already exists! ...
# 设置mysql客户端连接服务端时默认使用的端口
*: [[File:安装服务.jpg|400px]]
port=3307
* 查看MySQL版本:
default-character-set=utf8mb4
*: <syntaxhighlight lang="xml">
</syntaxhighlight>
mysql --version
#* 需要设置不同的端口!
#* MYSQL 8+ 字符编码要求使用“utf8mb4”,否则在初始化的时候会报一个警告;
#* MYSQL 8+ 默认的认证插件为“caching_sha2_password”;MYSQL 5.7 默认使用“mysql_native_password”;
#* “server-id”用于不同服务器的主从复制,这里不需要;
# 初始化数据库:
#: <syntaxhighlight lang="bash" highlight="">
cd D:\Program Files\MySQL\mysql-5.7.35\bin
mysqld --initialize --user=mysql --console
 
cd D:\Program Files\MySQL\mysql-8.0.27\bin
mysqld --initialize --user=mysql --console
</syntaxhighlight>
#* 完成之后,可以通过“mysqld --version”确认是否成功;
#* 安装第二个时,可能遇到错误:<big>'''<code>[ERROR]—initialize specified but the data directory has files in it . Aborting .</code>'''</big>
#*: [[File:MySQL安装多版本错误:--initialize specified but the data directory has files int it.png|600px]]
#*: 原因:由于已为第一个 MySQL 配置了环境变量,所以虽然定位到了第二个 bin 目录,但使用的还是第一个 bin(环境变量中先读取的那个)  ——【这他妈是 Windows 的 bug 吧】
#*: 解决:<big>'''先删除环境变量,待初始化、安装服务之后,再配置环境变量。'''</big>  ——【由于使用的不是定位的目录,还可能引起许多问题——由于不同版本 MySQL 引起的问题】
# 安装服务:
#: <syntaxhighlight lang="bash" highlight="">
cd D:\Program Files\MySQL\mysql-5.7.35\bin
mysqld –install MySQL57
 
cd D:\Program Files\MySQL\mysql-8.0.27\bin
mysqld –install MySQL80
</syntaxhighlight>
#* 需要设置不同的服务名称!
# 配置环境变量:
#: <syntaxhighlight lang="bash" highlight="">
MYSQL_HOME57:D:\Program Files\MySQL\mysql-5.7.35
MYSQL_HOME80:D:\Program Files\MySQL\mysql-8.0.27
 
path 添加:%MYSQL_HOME57%\bin;%MYSQL_HOME80%\bin;
</syntaxhighlight>
# '''修改注册表''':【!!!】
#: 注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,将“'''ImagePath'''”设置为正确的路径,如:
#: <syntaxhighlight lang="bash" highlight="">
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57
ImagePath:"D:\Program Files\MySQL\mysql-5.7.35\bin\mysqld" MySQL57
 
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57
ImagePath:"D:\Program Files\MySQL\mysql-8.0.27\bin\mysqld" MySQL80
</syntaxhighlight>
#* 因为安装了两个版本的 MySQL,所以后一个的执行文件被指向了前一个版本目录中的内容,需要修改!!!
# '''开放端口''':【!!!】
#: 在防火墙的“高级设置”中添加“'''入站规则'''”,指定需要的端口。
#* 规则可能没生效,可能需要重启。【坑】
 
 
::: [[File:MySQL多版本安装.png|800px]]
 
=== 指定“--defaults-file” ===
如果安装过程中要指定“--defaults-file”,则必须在前面:
: <syntaxhighlight lang="bash" highlight="">
应该是:
mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console
 
而非:
mysqld --initialize --user=mysql --console --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini"
</syntaxhighlight>
示例:
: <syntaxhighlight lang="bash" highlight="">
cd D:\Program Files\MySQL\mysql-5.7.35\bin
mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console
mysqld –install MySQL57 --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini"
 
cd D:\Program Files\MySQL\mysql-8.0.27\bin
mysqld --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini" --initialize --user=mysql --console
mysqld –install MySQL80 --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini"
</syntaxhighlight>
</syntaxhighlight>
*: [[File:查看MySQL版本.png|400px]]


=== window服务设置 ===
=== 验证安装 ===
安装完成则可以在Windows服务中看到名为“MySQL”的服务,可以自行设置自启动等;
如果服务均能启动,则说明安装成功。
 
 
如果有服务不能启动:(以下两个作用一样)
# 在注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,在“ImagePath”可以确认是不是正确;
# 在服务页面找到安装的服务项,右键页面可以看到服务的安装信息是否正确;
 
=== “本地计算机上的 MySQLXX 服务启动后停止。某些服务在未由其他程序或服务使用时将自动停止” ===
如上安装了两个MySQL版本之后,发现始终只能启动一个。
 
: 一开始以为是因为服务的执行文件指向的是同一个目录下的内容,通过注册表项进行了更改,但是问题依旧;
: 然后发现,其实是只能使用“3306”一个接口,无论哪个版本设置3306都可以启动,但是其他接口就不行,所以在防火墙打开了 3306-3309 的接口,但是问题依旧。
【解决】:坑比的系统防火墙规则没生效,重启了一遍才生效,一切正常了。


=== 卸载MySQL ===
 
* 切换 MySQL 版本的时候,需要先移除服务再安装。
所以步骤是:
执行命令移除MySQL服务:
# 修改注册表;
<syntaxhighlight lang="xml">
# 开放端口;
# 判断端口是否生效,否则重启试试。
 
== 卸载MySQL ==
# 移除 MySQL 服务:
#: <syntaxhighlight lang="bash" highlight="">
mysqld -remove
mysqld -remove
</syntaxhighlight>
</syntaxhighlight>
# 删除环境变量;
# 删除 MySQL 目录;
#* 此外,在“C:\ProgramData”、“C:\Program Files (x86)”、“C:\Program Files”等位置可能还有 MySQL 的文件夹;


== 进入 MySQL ==
== 进入 MySQL ==
# 启动服务:使用Windows的cmd执行命令,用于手动启动服务:
#: <syntaxhighlight lang="xml">
net start mysql
</syntaxhighlight>
# 登录:
#: <syntaxhighlight lang="xml">
mysql -u root -p
</syntaxhighlight>
# 设置密码:
#: <syntaxhighlight lang="xml">
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
</syntaxhighlight>
#: <!-- msi本机安装时修改密码为“@eijux” -->
# 操作数据库:如查看存在的数据库等:
#: <syntaxhighlight lang="xml">
show databases;
</syntaxhighlight>
# 退出和停止:
#: <syntaxhighlight lang="xml">
quit  // 退出
net stop mysql // 停止服务
</syntaxhighlight>


== 附:安装 MySQL(mysql-installer-community-5.7.33.0.msi)==
== 附:安装 MySQL(mysql-installer-community-5.7.33.0.msi)==
使用Windows Installer安装MySQL顺序而行,没有特别需要注意的地方:
<gallery>
File:WindowsInstaller安装MySQL_1.jpg|“License Agreement(用户许可证协议)”
File:WindowsInstaller安装MySQL_2.jpg|“Choosing a Setup Type(安装类型选择)”
File:WindowsInstaller安装MySQL_3.jpg|根据所选择的安装类型安装 Windows 系统框架(framework)
File:WindowsInstaller安装MySQL_4.jpg|弹出安装程序窗口,安装需要的系统框架
File:WindowsInstaller安装MySQL_5.jpg|框架已经安装完成
File:WindowsInstaller安装MySQL_6.jpg|所需框架均安装成功后,单击 “Next(下一步)”
File:WindowsInstaller安装MySQL_7.jpg|安装确认窗口,单击 “Execute(执行)”按钮,开始 MySQL 各个组件的安装
</gallery>

2023年12月6日 (三) 13:02的最新版本


下载安装包

一般选择的是社区版(MySQL Community Server)的GA版本(正式发布版本、生产版本),链接 MySQL:Download MySQL Community Server

下载MySQL安装文件.jpg


安装文件类型:

  1. “mysql-xxx-win64.zip”:编译好的 windows 64 位 MySQL,文件解压缩后即可使用(需要手工配置)。
  2. “mysql-xxx-win64.msi”:windows 安装包,双击执行根据向导安装即可。
  3. “mysql-xxx.zip”:windows源文件,需要编译。

安装 MySQL

以 mysql-5.7.33-winx64.zip 为例。


安装步骤:

  1. 解压 MySQL 文件到目的目录;(如“D:\Program Files\mysql-5.7.33-winx64”)
  2. 配置环境变量:
    MYSQL_HOME:D:\Program Files\mysql-5.7.33-winx64;
    
    path 添加:%MYSQL_HOME%\bin;
    
  3. 新建配置文件“my.ini”:
    [mysql]  
    # 设置 mysql 客户端默认字符集  
    default-character-set=utf8 
     
    [mysqld]  
    # 设置 3306 端口  
    port = 3306  
    
    # 设置 mysql 的安装目录  
    basedir=D:\Program Files\mysql-5.7.23-winx64
    
    # 设置 mysql 数据库的数据的存放目录  
    datadir=D:\Program Files\mysql-5.7.23-winx64\data 
    
    # 允许最大连接数  
    max_connections=200  
    
    # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集  
    character-set-server=utf8  
    
    # 创建新表时将使用的默认存储引擎  
    default-storage-engine=INNODB
    
    • 用于配置MySQL的基础设置,如字符集、引擎、端口、安装目录、数据目录等。
  4. 初始化数据库:
    # 初始化命令
    mysqld --initialize-insecure --user=mysql
    
    MySQL目录中多出一个“data”文件夹,包含了系统的默认数据库;
    • 如果使用“--initialize”还会生了一个随机的初始 root 密码。
  5. 安装服务:
    # 将服务器安装为 Windows 服务,并设置服务为“自动启动”
    mysqld -install [service_name]
    
    # 将服务器安装为 Windows 服务,并设置服务为“手动启动”
    mysqld --install-manual [service_name]
    
    • 如果未提供“[service_name]”值,则默认服务名称为“MySQL”。
    • 第一次安装的话会显示“Service successfully installed.”;否则会显示“The service already exists! ...”
      安装服务.jpg
  6. 验证安装:
    # 查看MySQL版本
    mysql --version
    
    查看MySQL版本.png

关于“初始化数据库”

安装 MySQL 之后,初始化数据库,包括 mysql 系统数据库中的表:

mysqld --initialize --user=mysql [--console]

mysqld --initialize-insecure --user=mysql [--console]
  1. “--user=mysql”:以“mysql”身份运行该命令。
  2. “--console”:选项将消息定向到 Windows 控制台;否则将写入其标准错误输出:“错误日志”(data目录中后缀为“.err”的文件)。
  3. “--initialize”:进行“默认安全”的初始化,即:包括生成随机的初始root密码(可在错误日志中找到)。
    • 以 root 连接到服务器时,“mysql -u root -p”需要生成的临时密码;
    • 在这种情况下,密码被标记为已过期,您将需要选择一个新密码;
  4. “--initialize-insecure”:执行初始化,但不会生成root密码
    • 以 root 连接到服务器时,不使用密码登录“mysql -u root --skip-password”;
    • 这是不安全的;假定您在将服务器投入生产使用之前会及时为帐户分配密码;


对于某些 MySQL 安装方法,数据目录初始化是自动的。(如在 Windows 上通过msi文件的自动化安装过程)

对于其他安装方法,必须手动初始化数据目录。(包括在 Unix 和类似 Unix 的系统上从通用二进制发行版和源代码发行版进行安装,以及在 Windows 上从 ZIP Archive 软件包进行安装)

初始化期间的服务器操作:服务器检查数据目录是否存在

  1. 如果不存在数据目录,则服务器将创建它。
  2. 如果数据目录存在但不为空(即它包含文件或子目录),则服务器在生成错误消息后退出:
    [ERROR] --initialize specified but the data directory exists. Aborting.
    
    • 在这种情况下,请删除或重命名数据目录,然后重试。
  • 首次安装 MySQL 之后才需要进行数据目录初始化;但,初始化数据目录的命令不会覆盖任何现有的 mysql 数据库表,因此在任何情况下都可以安全运行。

多版本安装

多版本共存时:
1、需要配置不同的环境变量。
2、配置文件中:需要指定不同端口“port”避免冲突;
3、安装时,安装命令需要指定配置文件。


步骤:(以 5.7.35、8.0.27 为例)

  1. 解压 MySQL 文件到目的目录;
  2. 新建配置文件:
    分别在两个 MySQL 目录中新建“my.ini”:
    [mysqld]
    # 设置端口
    port=3306
    # 设置 mysql 的安装目录
    basedir=D:\Program Files\MySQL\mysql-5.7.35
    # 设置 mysql 数据库的数据的存放目录
    datadir=D:\Program Files\MySQL\mysql-5.7.35\data 
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    
    [mysql]
    # 设置 mysql 客户端默认字符集
    default-character-set=utf8
    
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8
    
    [mysqld]
    # 设置端口
    port=3307
    # 设置mysql的安装目录
    basedir=D:\Program Files\MySQL\mysql-8.0.27
    # 设置mysql数据库的数据的存放目录
    datadir=D:\Program Files\MySQL\mysql-8.0.27\data
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数
    max_connect_errors=10
    # 服务端使用的字符集默认为UTF8
    character-set-server=utf8mb4
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 认证插件:默认使用“caching_sha2_password”,可选“mysql_native_password”
    default_authentication_plugin=caching_sha2_password
    
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8mb4
    
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3307
    default-character-set=utf8mb4
    
    • 需要设置不同的端口!
    • MYSQL 8+ 字符编码要求使用“utf8mb4”,否则在初始化的时候会报一个警告;
    • MYSQL 8+ 默认的认证插件为“caching_sha2_password”;MYSQL 5.7 默认使用“mysql_native_password”;
    • “server-id”用于不同服务器的主从复制,这里不需要;
  3. 初始化数据库:
    cd D:\Program Files\MySQL\mysql-5.7.35\bin
    mysqld --initialize --user=mysql --console
    
    cd D:\Program Files\MySQL\mysql-8.0.27\bin
    mysqld --initialize --user=mysql --console
    
    • 完成之后,可以通过“mysqld --version”确认是否成功;
    • 安装第二个时,可能遇到错误:[ERROR]—initialize specified but the data directory has files in it . Aborting .
      MySQL安装多版本错误:--initialize specified but the data directory has files int it.png
      原因:由于已为第一个 MySQL 配置了环境变量,所以虽然定位到了第二个 bin 目录,但使用的还是第一个 bin(环境变量中先读取的那个) ——【这他妈是 Windows 的 bug 吧】
      解决:先删除环境变量,待初始化、安装服务之后,再配置环境变量。 ——【由于使用的不是定位的目录,还可能引起许多问题——由于不同版本 MySQL 引起的问题】
  4. 安装服务:
    cd D:\Program Files\MySQL\mysql-5.7.35\bin
    mysqld –install MySQL57
    
    cd D:\Program Files\MySQL\mysql-8.0.27\bin
    mysqld –install MySQL80
    
    • 需要设置不同的服务名称!
  5. 配置环境变量:
    MYSQL_HOME57:D:\Program Files\MySQL\mysql-5.7.35
    MYSQL_HOME80:D:\Program Files\MySQL\mysql-8.0.27
    
    path 添加:%MYSQL_HOME57%\bin;%MYSQL_HOME80%\bin;
    
  6. 修改注册表:【!!!】
    注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,将“ImagePath”设置为正确的路径,如:
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57
    ImagePath:"D:\Program Files\MySQL\mysql-5.7.35\bin\mysqld" MySQL57
    
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL57
    ImagePath:"D:\Program Files\MySQL\mysql-8.0.27\bin\mysqld" MySQL80
    
    • 因为安装了两个版本的 MySQL,所以后一个的执行文件被指向了前一个版本目录中的内容,需要修改!!!
  7. 开放端口:【!!!】
    在防火墙的“高级设置”中添加“入站规则”,指定需要的端口。
    • 规则可能没生效,可能需要重启。【坑】


MySQL多版本安装.png

指定“--defaults-file”

如果安装过程中要指定“--defaults-file”,则必须在前面:

应该是:
mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console

而非:
mysqld --initialize --user=mysql --console --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini"

示例:

cd D:\Program Files\MySQL\mysql-5.7.35\bin
mysqld --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini" --initialize --user=mysql --console
mysqld –install MySQL57 --defaults-file="D:\Program Files\MySQL\mysql-5.7.35\my.ini"

cd D:\Program Files\MySQL\mysql-8.0.27\bin
mysqld --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini" --initialize --user=mysql --console 
mysqld –install MySQL80 --defaults-file="D:\Program Files\MySQL\mysql-8.0.27\my.ini"

验证安装

如果服务均能启动,则说明安装成功。


如果有服务不能启动:(以下两个作用一样)

  1. 在注册表“计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\”下找到安装的服务,在“ImagePath”可以确认是不是正确;
  2. 在服务页面找到安装的服务项,右键页面可以看到服务的安装信息是否正确;

“本地计算机上的 MySQLXX 服务启动后停止。某些服务在未由其他程序或服务使用时将自动停止”

如上安装了两个MySQL版本之后,发现始终只能启动一个。

一开始以为是因为服务的执行文件指向的是同一个目录下的内容,通过注册表项进行了更改,但是问题依旧;
然后发现,其实是只能使用“3306”一个接口,无论哪个版本设置3306都可以启动,但是其他接口就不行,所以在防火墙打开了 3306-3309 的接口,但是问题依旧。

【解决】:坑比的系统防火墙规则没生效,重启了一遍才生效,一切正常了。


所以步骤是:

  1. 修改注册表;
  2. 开放端口;
  3. 判断端口是否生效,否则重启试试。

卸载MySQL

  1. 移除 MySQL 服务:
    mysqld -remove
    
  2. 删除环境变量;
  3. 删除 MySQL 目录;
    • 此外,在“C:\ProgramData”、“C:\Program Files (x86)”、“C:\Program Files”等位置可能还有 MySQL 的文件夹;

进入 MySQL

  1. 启动服务:使用Windows的cmd执行命令,用于手动启动服务:
    net start mysql
    
  2. 登录:
    mysql -u root -p
    
  3. 设置密码:
    use mysql;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    
  4. 操作数据库:如查看存在的数据库等:
    show databases;
    
  5. 退出和停止:
    quit  // 退出
    net stop mysql // 停止服务
    

附:安装 MySQL(mysql-installer-community-5.7.33.0.msi)

使用Windows Installer安装MySQL顺序而行,没有特别需要注意的地方: