#### 2.3.4.8 将 MySQL 作为 Windows 服务启动

在 Windows 上，运行 MySQL 的推荐方法是将其安装为 Windows 服务，以便 MySQL 在 Windows 启动和停止时自动启动和停止。作为服务安装的 MySQL 服务器也可以从命令行使用**网**命令，或使用图形**服务**效用。通常，要将 MySQL 安装为 Windows 服务，您应该使用具有管理员权限的帐户登录。

这**服务**实用程序（Windows**服务控制经理**) 可以在 Windows 控制面板中找到。为避免冲突，建议关闭**服务**实用程序，同时从命令行执行服务器安装或删除操作。

##### 安装服务

在将 MySQL 安装为 Windows 服务之前，您应该首先使用以下命令停止当前服务器（如果它正在运行）：

```
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqladmin"
          -u root shutdown
```

笔记

如果 MySQL`根`用户账号有密码，需要调用[**mysql管理员**](mysqladmin.html)与`-p`选项并在提示时提供密码。

此命令调用 MySQL 管理实用程序[**mysql管理员**](mysqladmin.html)连接到服务器并告诉它关闭。该命令作为 MySQL 连接`根`用户，这是 MySQL 授权系统中的默认管理帐户。

笔记

MySQL 授权系统中的用户完全独立于 Windows 下的任何操作系统用户。

使用以下命令将服务器安装为服务：

```
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install
```

service-installation 命令不会启动服务器。本节稍后将给出相关说明。

为了更容易调用 MySQL 程序，可以添加 MySQL 的路径名`斌`目录到您的 Windows 系统`小路`环境变量：

-   在 Windows 桌面上，右键单击我的电脑图标，然后选择属性。

-   接下来从出现的系统属性菜单中选择高级选项卡，然后单击环境变量按钮。

-   在系统变量下，选择路径，然后单击编辑按钮。应出现“编辑系统变量”对话框。

-   将光标放在标记为变量值的空间中出现的文本末尾。（使用**结尾**键以确保您的光标位于此空间中文本的最末尾。）然后输入您的 MySQL 的完整路径名`斌`目录（例如，`C:\Program Files\MySQL\MySQL 服务器 8.0\bin`)，并且应该有一个分号将此路径与该字段中存在的任何值分开。通过单击“确定”直到所有打开的对话都被关闭，依次关闭此对话和每个对话。您现在应该能够通过在系统上的任何目录的 DOS 提示符下键入其名称来调用任何 MySQL 可执行程序，而无需提供路径。这包括服务器、[**mysql**](mysql.html)客户端和所有 MySQL 命令行实用程序，例如[**mysql管理员**](mysqladmin.html)和[**mysql转储**](mysqldump.html).

    你不应该添加 MySQL`斌`目录到您的 Windows`小路`如果您在同一台机器上运行多个 MySQL 服务器。

警告

编辑系统时必须非常小心`小路`用手;意外删除或修改现有的任何部分`小路`value 可能会使您的系统出现故障甚至无法使用。

安装服务时可以使用以下附加参数：

-   您可以在紧随其后指定服务名称`- 安装`选项。默认服务名称是`MySQL`.

-   如果给定了服务名称，则可以在其后跟一个选项。按照惯例，这应该是[`--默认文件=*`文件名`*`](option-file-options.html#option_general_defaults-file)指定选项文件的名称，服务器在启动时应从该文件中读取选项。

    使用除[`--defaults 文件`](option-file-options.html#option_general_defaults-file)是可能的，但不鼓励。[`--defaults 文件`](option-file-options.html#option_general_defaults-file)更灵活，因为它允许您通过将它们放在命名的选项文件中来为服务器指定多个启动选项。

-   您还可以指定一个`--本地服务`服务名称后面的选项。这会导致服务器使用`本地服务`具有有限系统权限的 Windows 帐户。如果两者[`--defaults 文件`](option-file-options.html#option_general_defaults-file)和`--本地服务`在服务名称之后给出，它们可以按任何顺序排列。

    对于作为 Windows 服务安装的 MySQL 服务器，以下规则确定服务器使用的服务名称和选项文件：

-   如果 service-installation 命令未指定服务名称或默认服务名称 (`MySQL`) 以下`- 安装`选项，服务器使用的服务名称`MySQL`并从`[mysqld]`标准选项文件中的组。

-   如果 service-installation 命令指定的服务名称不是`MySQL`遵循`- 安装`选项，服务器使用该服务名称。它从`[mysqld]`group 和与标准选项文件中的服务同名的组。这使您可以使用`[mysqld]`用于所有 MySQL 服务应使用的选项的组，以及具有服务名称的选项组，供以该服务名称安装的服务器使用。

-   如果 service-installation 命令指定一个[`--defaults 文件`](option-file-options.html#option_general_defaults-file)服务名称后面的选项，服务器读取选项的方式与上一项中描述的相同，只是它仅从命名文件中读取选项并忽略标准选项文件。

    作为一个更复杂的示例，请考虑以下命令：


```
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf
```

这里，默认服务名称（`MySQL`) 后给出`- 安装`选项。如果不[`--defaults 文件`](option-file-options.html#option_general_defaults-file)选项已经给出，这个命令会导致服务器读取`[mysqld]`标准选项文件中的组。然而，由于[`--defaults 文件`](option-file-options.html#option_general_defaults-file)选项存在，服务器从`[mysqld]`选项组，并且仅来自命名文件。

笔记

在 Windows 上，如果服务器以[`--defaults 文件`](option-file-options.html#option_general_defaults-file)和[`- 安装`](server-options.html#option_mysqld_install)选项，[`- 安装`](server-options.html#option_mysqld_install)必须是第一。否则，`mysqld.exe`尝试启动 MySQL 服务器。

您还可以在 Windows 中将选项指定为启动参数**服务**启动 MySQL 服务之前的实用程序。

最后，在尝试启动 MySQL 服务之前，请确保用户变量`%温度%`和`%TMP%`（并且`%TMPDIR%`，如果曾经设置过）对于运行该服务的操作系统用户来说，它指向一个用户有写访问权限的文件夹。运行 MySQL 服务的默认用户是`本地系统`，以及它的默认值`%温度%`和`%TMP%`是`C:\Windows\Temp`, 一个目录`本地系统`默认情况下具有写入权限。但是，如果该默认设置有任何更改（例如，更改运行服务的用户或提到的用户变量，或者[`--tmpdir`](server-options.html#option_mysqld_tmpdir)选项已用于将临时目录放在其他位置），MySQL 服务可能无法运行，因为尚未向适当的用户授予对临时目录的写访问权限。

##### 启动服务

将 MySQL 服务器实例安装为服务后，Windows 会在 Windows 启动时自动启动该服务。该服务也可以立即从**服务**实用程序，或通过使用**sc 开始*`mysqld_service_name`***要么**网络开始*`mysqld_service_name`***命令。**SC**和**网**命令不区分大小写。

作为服务运行时，[**mysqld**](mysqld.html)无法访问控制台窗口，因此在那里看不到任何消息。如果[**mysqld**](mysqld.html)无法启动，请检查错误日志以查看服务器是否在此处写入任何消息以指示问题的原因。错误日志位于 MySQL 数据目录中（例如，`C:\Program Files\MySQL\MySQL 服务器 8.0\data`）。它是带有后缀的文件`。呃`.

当 MySQL 服务器已作为服务安装并且该服务正在运行时，Windows 会在 Windows 关闭时自动停止该服务。服务器也可以使用手动停止`服务`实用程序**停止*`mysqld_service_name`***指挥部**净停止*`mysqld_service_name`***命令，或[**mysqladmin 关闭**](mysqladmin.html)命令。

如果您不希望在引导过程中自动启动该服务，您还可以选择将服务器安装为手动服务。为此，请使用`--安装手册`选项而不是`- 安装`选项：

```
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install-manual
```

##### 删除服务

要删除作为服务安装的服务器，如果它正在运行，请首先通过执行停止它**停止*`mysqld_service_name`***要么**净停止*`mysqld_service_name`***.然后使用**SC 删除*`mysqld_service_name`***删除它：

```
C:\> SC DELETE mysql
```

或者，使用[**mysqld**](mysqld.html) [`- 消除`](server-options.html#option_mysqld_remove)删除服务的选项。

```
C:\> "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --remove
```

如果[**mysqld**](mysqld.html)没有作为服务运行，您可以从命令行启动它。有关说明，请参阅[第 2.3.4.6 节，“从 Windows 命令行启动 MySQL”](windows-start-command-line.html).

如果您在安装过程中遇到困难，请参阅[第 2.3.5 节，“Microsoft Windows MySQL 服务器安装故障排除”](windows-troubleshooting.html).

有关停止或删除 Windows 服务的详细信息，请参阅[第 5.8.2.2 节，“将多个 MySQL 实例作为 Windows 服务启动”](multiple-windows-services.html).
