2.3.3.8 将 MySQL 作为 Windows 服务启动
在 Windows 上,安装 MySQL 作为 Windows 服务是推荐的方法,这样 MySQL 就会在 Windows 启动和停止时自动启动和停止。安装的 MySQL 服务也可以使用 NET 命令或图形化的 Services 工具来控制。通常情况下,您需要使用具有管理员权限的帐户来安装 MySQL 作为 Windows 服务。
图形化的 Services 工具(Windows Service Control Manager) 可以在 Windows 控制面板中找到。为了避免冲突,建议在从命令行安装或删除服务器时关闭 Services 工具。
在安装 MySQL 作为 Windows 服务之前,您需要首先停止当前服务器使用以下命令:
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqladmin"
-u root shutdown
如果 MySQL root
用户帐户有密码,您需要使用 mysqladmin 命令,使用 -p
选项并输入密码时提示。
这个命令将调用 MySQL 管理工具 mysqladmin 连接到服务器,并告诉服务器关闭。命令将连接到 MySQL root
用户,这是 MySQL 授予系统的默认管理员帐户。
MySQL 授予系统中的用户完全独立于 Windows 操作系统中的用户。
使用以下命令安装服务器作为服务:
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --install
服务安装命令不启动服务器。关于启动服务器的说明将在本节后面。
为了更方便地调用 MySQL 程序,您可以将 MySQL bin
目录的路径添加到 Windows 系统 PATH
环境变量中:
-
在 Windows 桌面上,右键单击 My Computer 图标,然后选择 。
-
然后,选择
选项卡,从 菜单中出现的菜单中选择,然后单击 按钮。 -
在 System Variables 部分,选择 ,然后单击 按钮。出现的 对话框中,您可以编辑 Path 变量。
-
将光标置于变量值空格中最后的文本处。 (使用End键确保光标位于该空格中的文本末尾处。) 然后输入MySQL
bin
目录的完整路径名(例如,C:\Program Files\MySQL\MySQL Server 8.4\bin
),并确保路径与该字段中的任何值之间有一个分号。dismiss 这个对话框,并且每个对话框都点击 ,直到所有对话框都dismiss完毕。现在,您可以在系统上的任何目录中通过在 DOS 提示符下输入命令来调用任何 MySQL 可执行程序,而无需提供路径。这包括服务器、mysql 客户端,以及所有 MySQL 命令行实用工具,如mysqladmin 和mysqldump。您不应该将 MySQL
bin
目录添加到 WindowsPATH
中,如果您在同一台机器上运行多个 MySQL 服务器。
您必须小心编辑系统 PATH
,因为意外删除或修改现有 PATH
值可能会使系统无法使用或出现故障。
以下是安装服务时可以使用的附加参数:
-
您可以在
--install
选项后立即指定服务名称。默认服务名称是MySQL
。 -
如果指定了服务名称,可以在其后添加一个选项。 conventionally,这个选项应该是
--defaults-file=
,以指定要从中读取选项的选项文件名称,当服务器启动时。file_name
使用单个选项,除了
--defaults-file
,是可能的,但不鼓励。--defaults-file
更加灵活,因为它使您可以在指定的选项文件中指定多个启动选项。 -
您也可以指定
--local-service
选项,后跟服务名称。这使服务器使用LocalService
Windows 帐户,该帐户具有有限的系统权限。如果同时指定--defaults-file
和--local-service
,它们可以在任何顺序中出现。
对于安装了 Windows 服务的 MySQL 服务器,以下规则确定服务名称和选项文件:
-
如果服务安装命令没有指定服务名称或使用默认服务名称(
MySQL
)后跟随--install
选项,服务器将使用服务名称MySQL
,并从标准选项文件中的[mysqld]
组中读取选项。 -
如果服务安装命令指定的服务名称不同于
MySQL
,服务器将使用该服务名称。它从[mysqld]
组和具有相同名称的服务组中读取选项。这使您可以使用[mysqld]
组为所有MySQL服务使用的选项,并使用服务名称的组为该服务名称安装的服务器使用的选项。 -
如果服务安装命令指定了
--defaults-file
选项后跟随服务名称,服务器将按照前一个项目描述的方式读取选项,但只从命名文件中读取选项,忽略标准选项文件。
考虑以下命令作为更复杂的示例:
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld"
--install MySQL --defaults-file=C:\my-opts.cnf
在这里,使用了默认服务名称(MySQL
)后跟随--install
选项。如果没有指定--defaults-file
选项,这个命令将导致服务器从标准选项文件中读取[mysqld]
组的选项。然而,因为指定了--defaults-file
选项,服务器将读取[mysqld]
选项组,并且只从命名文件中读取选项。
在Windows上,如果服务器使用--defaults-file
和--install
选项,必须先使用--install
选项。否则,mysqld.exe
将尝试启动MySQL服务器。
您也可以在Windows的Servicesutility中作为启动参数指定选项,然后启动MySQL服务。
在启动MySQL服务之前,请确保操作系统用户的变量%TEMP%
和%TMP%
(如果曾经设置过%TMPDIR%
)指向可以写入的文件夹。默认的服务用户为LocalSystem
,其默认的%TEMP%
和%TMP%
值为C:\Windows\Temp
,LocalSystem
默认具有写入访问权限。然而,如果有任何更改(例如更改服务运行的用户或用户变量,或者使用--tmpdir
选项将临时目录移到其他地方),MySQL服务可能无法启动,因为没有授予适当用户写入访问权限的临时目录。
安装 MySQL 服务器实例作为服务后,Windows 将自动启动服务在 Windows 启动时。服务也可以立即从 服务 工具或使用 sc start mysqld_service_name
或 NET START mysqld_service_name
命令启动。 SC 和 NET 命令不区分大小写。
当服务运行时,mysqld 无法访问控制台窗口,因此在控制台窗口中无法看到任何信息。如果 mysqld 未启动,请查看错误日志,以确定问题的原因。错误日志位于 MySQL 数据目录(例如,C:\Program Files\MySQL\MySQL Server 8.4\data
),文件名以 .err
结尾。
当 MySQL 服务器安装为服务,并且服务正在运行时,Windows 将在 Windows 关闭时自动停止服务。服务也可以手动停止使用 服务
工具、sc stop mysqld_service_name
命令、NET STOP mysqld_service_name
命令或 mysqladmin shutdown 命令。
您还可以选择将服务器安装为手动服务,如果您不想服务在启动过程中自动启动。要实现此操作,请使用 --install-manual
选项,而不是 --install
选项:
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --install-manual
要删除已安装的服务,首先停止服务,如果它正在运行,然后使用 SC DELETE mysqld_service_name
命令删除它:
C:\> SC DELETE mysql
或者,您可以使用 mysqld --remove
选项删除服务。
C:\> "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld" --remove
如果 mysqld 未运行作为服务,您可以从命令行启动它。详细信息,请见 Section 2.3.3.6, “从 Windows 命令行启动 MySQL”。
如果您在安装过程中遇到问题,请见 Section 2.3.4, “Troubleshooting a Microsoft Windows MySQL Server Installation”。
关于停止或删除 Windows 服务的更多信息,请见第7.8.2.2节,“将多个 MySQL 实例作为 Windows 服务启动”。