2.3.4.8 将 MySQL 作为 Windows 服务启动

在 Windows 上,建议的运行 MySQL 的方法是将其安装为 Windows 服务,以便在 Windows 启动和停止时 MySQL 自动启动和停止。也可以使用 NET 命令或图形化的 Services Util 从命令行控制作为服务安装的 MySQL 服务器。通常,要将 MySQL 安装为 Windows 服务,应使用具有 Management 员权限的帐户登录。

Note

MySQL Notifier也可以用来监视 MySQL 服务的状态。

可以在 Windows 控制面板中找到 服务 Util(Windows 服务控制 Management 器 )。为避免冲突,建议在从命令行执行服务器安装或删除操作时关闭 Services Util。

安装服务

在将 MySQL 作为 Windows 服务安装之前,如果正在使用以下命令运行当前服务器,则应首先停止它:

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

Note

如果 MySQL root用户帐户具有密码,则需要使用-p选项调用mysqladmin并在提示时提供密码。

此命令调用 MySQLManagementUtilmysqladmin连接到服务器并告诉它关闭。该命令以 MySQL root用户身份连接,该用户是 MySQL 授权系统中的默认 Management 帐户。

Note

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

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

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

service-installation 命令不会启动服务器。有关说明,将在本节后面给出。

为了使调用 MySQL 程序更容易,可以将 MySQL bin目录的路径名添加到 Windows 系统PATH环境变量:

  • 在 Windows 桌面上,右键单击“我的电脑”图标,然后选择“属性”。

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

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

  • 将光标置于标记为“变量值”的空间中文本的末尾。 (使用 End 键确保光标位于该空间中文本的最末端.)然后 ImportingMySQL bin目录的完整路径名(例如C:\Program Files\MySQL\MySQL Server 5.7\bin),并且应该存在以分号分隔此路径和该字段中存在的任何值。单击“确定”,直到所有打开的对话框都被取消,然后关闭该对话框,然后依次取消每个对话框。现在,您应该能够通过在系统上任何目录的 DOS 提示符下键入其名称来调用任何 MySQL 可执行程序,而不必提供路径。这包括服务器,mysqlClient 端以及所有 MySQL 命令行 Util,例如mysqladminmysqldump

如果您在同一台计算机上运行多个 MySQL 服务器,则不应将 MySQL bin目录添加到 Windows PATH

Warning

手动编辑系统PATH时必须格外小心;意外删除或修改现有PATH值的任何部分都可能使您的系统出现故障,甚至无法使用。

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

  • 您可以在--install选项后立即指定服务名称。默认服务名称是MySQL

  • 如果提供了服务名称,则可以在其后跟一个选项。按照惯例,此名称应为--defaults-file=file_name以指定服务器启动时应从中读取选项的选项文件的名称。

可以使用--defaults-file以外的其他选项,但不建议使用。 --defaults-file更加灵活,因为它使您可以通过将多个启动选项放置在命名的选项文件中来为服务器指定多个启动选项。

  • 您还可以在服务名称后指定--local-service选项。这将导致服务器使用具有有限系统特权的LocalService Windows 帐户运行。如果在服务名称后同时给出了--defaults-file--local-service,则它们可以采用任何 Sequences。

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

  • 如果 service-installation 命令未在--install选项后指定服务名称或默认服务名称(MySQL),则服务器将使用MySQL的服务名称,并从标准选项文件中的[mysqld]组中读取选项。

  • 如果 service_installation 命令在--install选项后指定了MySQL以外的服务名称,则服务器将使用该服务名称。它从[mysqld]组以及与标准选项文件中的服务同名的组中读取选项。这使您可以将[mysqld]组用于所有 MySQL 服务应使用的选项,并将选项组与具有服务名称的选项组一起使用,以供安装有该服务名称的服务器使用。

  • 如果 service-installation 命令在服务名称后指定了--defaults-file选项,则服务器以与上一项相同的方式读取选项,只是服务器仅从命名文件读取选项,而忽略标准选项文件。

作为更复杂的示例,请考虑以下命令:

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

在此,默认服务名称(MySQL)在--install选项后给出。如果未提供--defaults-file选项,则此命令将导致服务器从标准选项文件中读取[mysqld]组。但是,由于存在--defaults-file选项,因此服务器从[mysqld]选项组(仅从命名文件)读取选项。

Note

在 Windows 上,如果使用--defaults-file--install选项启动服务器,则必须先使用--install。否则,mysqld.exe将尝试启动 MySQL 服务器。

在启动 MySQL 服务之前,您还可以在 Windows 服务 Util 中将选项指定为启动参数。

最后,在尝试启动 MySQL 服务之前,请确保要运行该服务的 os 用户的用户变量%TEMP%%TMP%(如果设置了%TMPDIR%,还应设置%TMPDIR%)指向该用户所在的文件夹具有写权限。运行 MySQL 服务的默认用户为LocalSystem,其%TEMP%%TMP%的默认值为C:\Windows\Temp,默认情况下目录LocalSystem具有写访问权限。但是,如果对该默认设置进行了任何更改(例如,对运行该服务的用户或提及的用户变量进行了更改,或者已使用--tmpdir选项将临时目录放在其他位置),则 MySQL 服务可能无法运行,因为尚未向适当的用户授予对临时目录的写访问权。

启动服务

将 MySQL 服务器实例作为服务安装后,Windows 每次启动时 Windows 都会自动启动该服务。也可以从 Services Util 或通过使用 sc start * mysqld_service_name *或 NET START * mysqld_service_name *命令立即启动该服务。 SCNET 命令不区分大小写。

当作为服务运行时,mysqld不能访问控制台窗口,因此在该窗口中看不到任何消息。如果mysqld没有启动,请检查错误日志,以查看服务器是否在其中写入了任何消息以指示问题的原因。错误日志位于 MySQL 数据目录(例如C:\Program Files\MySQL\MySQL Server 5.7\data)中。它是带有.err后缀的文件。

当 MySQL 服务器已作为服务安装且服务正在运行时,Windows 会在 Windows 关闭时自动停止服务。也可以使用ServicesUtil, sc stop * mysqld_service_name *命令, NET START * mysqld_service_name *命令或mysqladmin shutdown命令手动停止服务器。

如果您不希望服务器在引导过程中自动启动,则还可以选择将服务器安装为手动服务。为此,请使用--install-manual选项而不是--install选项:

C:\> "C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --install-manual
删除服务

要删除作为服务安装的服务器,请首先通过执行 SC STOP * mysqld_service_name *或 NET STOP * mysqld_service_name *将其停止运行。然后使用 SC DELETE * mysqld_service_name *将其删除:

C:\> SC DELETE mysql

或者,使用mysqld --remove选项删除服务。

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

如果mysqld没有作为服务运行,则可以从命令行启动它。有关说明,请参见第 2.3.4.6 节“从 Windows 命令行启动 MySQL”

如果在安装过程中遇到困难,请参阅第 2.3.5 节“对 Microsoft Windows MySQL Server 安装进行故障排除”

有关停止或删除 Windows 服务的更多信息,请参见第 5.7.2.2 节“作为 Windows 服务启动多个 MySQL 实例”