[scode type="share"]本文是通过zip文件的方式,在Windows上安装MySQL 8[/scode] # 1.下载MySQL免安装zip文件 [scode type="blue"]镜像地址可在`MySQL-8.0`文件夹内搜索`winx64.zip`,下载最新版本[/scode] * 官方下载页面地址:https://dev.mysql.com/downloads/mysql/ * 清华TUNA镜像地址:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/ * 华为云镜像地址:https://repo.huaweicloud.com/mysql/Downloads/ * 阿里云镜像地址:https://mirrors.aliyun.com/mysql * 腾讯云镜像地址:https://mirrors.cloud.tencent.com/mysql/downloads/ # 2.安装MySQL ## 2.1 解压缩 解压缩安装包到任意目录,**并创建配置文件my.ini** [scode type="red"]路径不要包含中文[/scode] ![2022-05-06T12:24:44.png][1] 配置文件的内容为 [scode type="yellow"]datadir设置的目录必须为空或者不存在[/scode] ``` [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\Program Files\mysql-8.0.29-winx64 # 设置mysql数据库的数据的存放目录 datadir=C:\MySqlData # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4 ``` ## 2.2 配置环境变量 [scode type="yellow"]如需在同一个系统内运行多个MySQL服务,请跳过此步骤,并将命令行cd至bin目录下来执行后续操作[/scode] 将解压文件夹下的bin路径添加到**系统变量**的Path值中,方便执行后续操作 ![2022-05-06T13:10:19.png][2] ## 2.3 初始化数据目录 [scode type="blue"]本步将会使用配置文件中datadir项设置的目录进行数据的初始化,此目录将会用于存储数据文件,请确保目录磁盘空间充足[/scode] 以**管理员权限**打开命令提示符,执行命令 ``` mysqld --initialize --console #初始化数据目录,并生成root账号的密码 #mysqld --initialize-insecure --console #初始化数据目录,不会生成root密码 ``` [scode type="yellow"]使用--initialize会自动生成临时密码,使用--initialize-insecure则密码为空[/scode] 执行成功会可看到生成了root密码,将其复制出来保存 ![2022-05-06T12:35:33.png][3] 此时可以看到在datadir所配置的位置生成了文件夹,文件夹中包含了初始化的数据文件 ![2022-05-06T12:36:46.png][4] [scode type="blue"]MySQL服务端的Log在默认情况下也位于此文件夹,以.err为后缀,如果服务发生错误,但未在此找到err文件,请确认程序是否具有此文件夹的读写权限[/scode] ## 2.4 配置root用户 ### 2.4.1 在命令行启动MySQL服务端 ``` mysqld --console ``` [scode type="blue"]MySQL服务端的默认配置文件位置读取优先级见下表(my.ini优先于my.cnf),如需指定其他配置文件,需增加参数:`--defaults-file="C:\Program Files\mysql-8.0.29-winx64\my2.ini"`[/scode] | 文件名 | 备注 | | :----: | :----: | | %WINDIR%\my.ini, %WINDIR%\my.cnf | 变量可使用命令`echo %WINDIR%`查看,默认为*C:\WINDOWS* | | C:\my.ini, C:\my.cnf | 无 | | BASEDIR\my.ini, BASEDIR\my.cnf | BASEDIR为mysqld程序所在bin文件夹的上级目录 | ### 2.4.2 再打开一个**新的**命令行窗口,执行以下命令,使用客户端登录MySQL ``` mysql u root -p Enter password: ************ #输入初始化数据目录时,控制台打印的root密码 ``` [scode type="yellow"]如果上一步使用了--initialize-insecure参数,则执行的登录命令不需要增加`-p`参数[/scode] ### 2.4.3 修改root密码 ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql'; ``` [scode type="yellow"]此处的'mysql'可修改为自定义密码[/scode] ### 2.4.4 允许从外部连接root用户 ```sql USE mysql; UPDATE user SET host='%' WHERE user ='root'; FLUSH PRIVILEGES; #刷新权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; ``` ### 2.4.5 关闭MySQL 直接在运行MySQL服务端的窗口使用Ctrl+C命令即可,也可使用以下命令关闭 ``` mysqladmin -u root -p shutdown ``` # 3.配置系统服务 上一步其实已经完成了MySQL的安装,但只能通过命令行进行启动,和停止和连接,为了方便使用,可将服务端添加至Windows服务,使其可以随Windows启动及关闭。 ## 3.1 安装MySQL服务 ``` mysqld --install [服务名] ``` [scode type="yellow"] [服务名]为可选项,在不填写时的默认名为MySQL[/scode] [scode type="blue"]在需安装多个MySQL服务时,可用不同的名字区分,并在服务名后增加参数:`--defaults-file="C:\Program Files\mysql-8.0.29-winx64\my2.ini"`来指定其他服务的配置文件,避免混乱[/scode] ## 3.2 MySQL服务管理 [scode type="blue"] [服务名]在未定义时为mysql(不区分大小写)[/scode] * 启动MySQL服务 [scode type="yellow"]在尝试启动 MySQL 服务之前,请确保运行该服务的操作系统用户(可通过`sc qc [服务名]`命令中的SERVICE_START_NAME查看)对用户变量%TEMP%和%TMP%以及%TMPDIR%(如有)对应的文件夹**有读写权限**,该变量对于部分用户的默认路径为:(系统用户)`C:\Windows\Temp`、(NetworkService)`C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp`、(LocalService)`C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp`[/scode] ``` net start [服务名] ``` * 停止MySQL服务 ``` net stop [服务名] ``` * 移除MySQL服务 [scode type="yellow"]移除前需先停止MySQL服务[/scode] ``` sc delete [服务名] ``` 或 ``` mysqld --remove [服务名] ``` [1]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:24:44.png [2]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T13:10:19.png [3]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:35:33.png [4]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:36:46.png Loading... <div class="tip inlineBlock share"> 本文是通过zip文件的方式,在Windows上安装MySQL 8 </div> # 1.下载MySQL免安装zip文件 <div class="tip inlineBlock info"> 镜像地址可在`MySQL-8.0`文件夹内搜索`winx64.zip`,下载最新版本 </div> * 官方下载页面地址:https://dev.mysql.com/downloads/mysql/ * 清华TUNA镜像地址:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/ * 华为云镜像地址:https://repo.huaweicloud.com/mysql/Downloads/ * 阿里云镜像地址:https://mirrors.aliyun.com/mysql * 腾讯云镜像地址:https://mirrors.cloud.tencent.com/mysql/downloads/ # 2.安装MySQL ## 2.1 解压缩 解压缩安装包到任意目录,**并创建配置文件my.ini** <div class="tip inlineBlock error"> 路径不要包含中文 </div> ![2022-05-06T12:24:44.png][1] 配置文件的内容为 <div class="tip inlineBlock warning"> datadir设置的目录必须为空或者不存在 </div> ``` [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\Program Files\mysql-8.0.29-winx64 # 设置mysql数据库的数据的存放目录 datadir=C:\MySqlData # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 #mysql_native_password default_authentication_plugin=mysql_native_password [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8mb4 [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8mb4 ``` ## 2.2 配置环境变量 <div class="tip inlineBlock warning"> 如需在同一个系统内运行多个MySQL服务,请跳过此步骤,并将命令行cd至bin目录下来执行后续操作 </div> 将解压文件夹下的bin路径添加到**系统变量**的Path值中,方便执行后续操作 ![2022-05-06T13:10:19.png][2] ## 2.3 初始化数据目录 <div class="tip inlineBlock info"> 本步将会使用配置文件中datadir项设置的目录进行数据的初始化,此目录将会用于存储数据文件,请确保目录磁盘空间充足 </div> 以**管理员权限**打开命令提示符,执行命令 ``` mysqld --initialize --console #初始化数据目录,并生成root账号的密码 #mysqld --initialize-insecure --console #初始化数据目录,不会生成root密码 ``` <div class="tip inlineBlock warning"> 使用--initialize会自动生成临时密码,使用--initialize-insecure则密码为空 </div> 执行成功会可看到生成了root密码,将其复制出来保存 ![2022-05-06T12:35:33.png][3] 此时可以看到在datadir所配置的位置生成了文件夹,文件夹中包含了初始化的数据文件 ![2022-05-06T12:36:46.png][4] <div class="tip inlineBlock info"> MySQL服务端的Log在默认情况下也位于此文件夹,以.err为后缀,如果服务发生错误,但未在此找到err文件,请确认程序是否具有此文件夹的读写权限 </div> ## 2.4 配置root用户 ### 2.4.1 在命令行启动MySQL服务端 ``` mysqld --console ``` <div class="tip inlineBlock info"> MySQL服务端的默认配置文件位置读取优先级见下表(my.ini优先于my.cnf),如需指定其他配置文件,需增加参数:`--defaults-file="C:\Program Files\mysql-8.0.29-winx64\my2.ini"` </div> | 文件名 | 备注 | | :----: | :----: | | %WINDIR%\my.ini, %WINDIR%\my.cnf | 变量可使用命令`echo %WINDIR%`查看,默认为*C:\WINDOWS* | | C:\my.ini, C:\my.cnf | 无 | | BASEDIR\my.ini, BASEDIR\my.cnf | BASEDIR为mysqld程序所在bin文件夹的上级目录 | ### 2.4.2 再打开一个**新的**命令行窗口,执行以下命令,使用客户端登录MySQL ``` mysql u root -p Enter password: ************ #输入初始化数据目录时,控制台打印的root密码 ``` <div class="tip inlineBlock warning"> 如果上一步使用了--initialize-insecure参数,则执行的登录命令不需要增加`-p`参数 </div> ### 2.4.3 修改root密码 ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql'; ``` <div class="tip inlineBlock warning"> 此处的'mysql'可修改为自定义密码 </div> ### 2.4.4 允许从外部连接root用户 ```sql USE mysql; UPDATE user SET host='%' WHERE user ='root'; FLUSH PRIVILEGES; #刷新权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; ``` ### 2.4.5 关闭MySQL 直接在运行MySQL服务端的窗口使用Ctrl+C命令即可,也可使用以下命令关闭 ``` mysqladmin -u root -p shutdown ``` # 3.配置系统服务 上一步其实已经完成了MySQL的安装,但只能通过命令行进行启动,和停止和连接,为了方便使用,可将服务端添加至Windows服务,使其可以随Windows启动及关闭。 ## 3.1 安装MySQL服务 ``` mysqld --install [服务名] ``` <div class="tip inlineBlock warning"> [服务名]为可选项,在不填写时的默认名为MySQL </div> <div class="tip inlineBlock info"> 在需安装多个MySQL服务时,可用不同的名字区分,并在服务名后增加参数:`--defaults-file="C:\Program Files\mysql-8.0.29-winx64\my2.ini"`来指定其他服务的配置文件,避免混乱 </div> ## 3.2 MySQL服务管理 <div class="tip inlineBlock info"> [服务名]在未定义时为mysql(不区分大小写) </div> * 启动MySQL服务 <div class="tip inlineBlock warning"> 在尝试启动 MySQL 服务之前,请确保运行该服务的操作系统用户(可通过`sc qc [服务名]`命令中的SERVICE_START_NAME查看)对用户变量%TEMP%和%TMP%以及%TMPDIR%(如有)对应的文件夹**有读写权限**,该变量对于部分用户的默认路径为:(系统用户)`C:\Windows\Temp`、(NetworkService)`C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp`、(LocalService)`C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp` </div> ``` net start [服务名] ``` * 停止MySQL服务 ``` net stop [服务名] ``` * 移除MySQL服务 <div class="tip inlineBlock warning"> 移除前需先停止MySQL服务 </div> ``` sc delete [服务名] ``` 或 ``` mysqld --remove [服务名] ``` [1]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:24:44.png [2]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T13:10:19.png [3]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:35:33.png [4]: https://cdn-qn.judi.fun/blog/typecho/2022-05-06T12:36:46.png Last modification:May 10, 2022 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏