2.3.5 对 Microsoft Windows MySQL Server 安装进行故障排除

首次安装和运行 MySQL 时,您可能会遇到某些错误,阻止 MySQL 服务器启动。本节可帮助您诊断和纠正其中一些错误。

解决服务器问题时,您的第一个资源是error log。 MySQL 服务器使用错误日志记录与阻止服务器启动的错误相关的信息。错误日志位于my.ini文件中指定的data directory中。默认数据目录位置是C:\Program Files\MySQL\MySQL Server 5.7\data,在 Windows 7 和 Windows Server 2008 上是C:\ProgramData\Mysql。默认情况下,C:\ProgramData目录是隐藏的。您需要更改文件夹选项以查看目录和内容。有关错误日志和了解其内容的更多信息,请参见第 5.4.2 节“错误日志”

有关可能的错误的信息,还请查阅 MySQL 服务启动时显示的控制台消息。将mysqld作为服务安装后,从命令行使用 SC START * mysqld_service_name *或 NET START * mysqld_service_name *命令查看有关将 MySQL 服务器作为服务启动的任何错误消息。参见第 2.3.4.8 节“将 MySQL 作为 Windows 服务启动”

以下示例显示了在首次安装 MySQL 并启动服务器时可能遇到的其他常见错误消息:

  • 如果 MySQL 服务器找不到mysql特权数据库或其他关键文件,它将显示以下消息:
System error 1067 has occurred.
Fatal error: Can't open and lock privilege tables:
Table 'mysql.user' doesn't exist

当 MySQL 基本目录或数据目录安装在默认位置以外的位置(分别为C:\Program Files\MySQL\MySQL Server 5.7C:\Program Files\MySQL\MySQL Server 5.7\data)时,通常会出现这些消息。

当 MySQL 升级并安装到新位置,但是配置文件未更新以反映新位置时,会发生这种情况。此外,新旧配置文件可能会冲突。升级 MySQL 时,请确保删除或重命名任何旧的配置文件。

如果您已将 MySQL 安装到C:\Program Files\MySQL\MySQL Server 5.7以外的其他目录,请确保 MySQL 服务器通过使用配置(my.ini)文件来意识到这一点。将my.ini文件放入 Windows 目录中,通常为C:\WINDOWS。要从WINDIR环境变量的值确定其确切位置,请从命令提示符处发出以下命令:

C:\> echo %WINDIR%

您可以使用任何文本编辑器(例如记事本)创建或修改选项文件。例如,如果 MySQL 安装在E:\mysql中,并且数据目录是D:\MySQLdata,则可以创建选项文件并设置[mysqld]部分以指定basedirdatadir选项的值:

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=D:/MySQLdata

Microsoft Windows 路径名称在选项文件中使用(正斜杠)而不是反斜杠指定。如果确实使用反斜杠,则将它们加倍:

[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\MySQL Server 5.7
# set datadir to the location of your data directory
datadir=D:\\MySQLdata

在选项文件值中使用反斜杠的规则在第 4.2.2.2 节“使用选项文件”中给出。

如果更改 MySQL 配置文件中的datadir值,则必须在重新启动 MySQL 服务器之前移动现有 MySQL 数据目录的内容。

See 第 2.3.4.2 节“创建选项文件”.

  • 如果重新安装或升级 MySQL 而没有先停止并删除现有的 MySQL 服务并使用 MySQL Installer 安装 MySQL,则可能会看到以下错误:
Error: Cannot create Windows service for MySql. Error: 0

当配置向导尝试安装服务并找到具有相同名称的现有服务时,会发生这种情况。

解决此问题的一种方法是在使用配置向导时选择mysql以外的服务名称。这样可以正确安装新服务,但是将过时的服务保留在原处。尽管这是无害的,但是最好删除不再使用的旧服务。

要永久删除旧的mysql服务,请以具有 Management 特权的用户身份在命令行上执行以下命令:

C:\> SC DELETE mysql
[SC] DeleteService SUCCESS

如果SCUtil 不适用于您的 Windows 版本,请从http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp下载delsrvUtil 并使用delsrv mysql语法。