首次安装和运行 MySQL 时,您可能会遇到某些错误,导致 MySQL 服务器无法启动。本节帮助您诊断和纠正其中一些错误。
排除服务器问题时的第一个资源是 错误日志。MySQL 服务器使用错误日志记录与阻止服务器启动的错误相关的信息。错误日志位于您的 my.ini
文件中指定的数据目录中。默认数据目录位置是 C:\Program Files\MySQL\MySQL Server 9.0\data
,或 Windows 7 和 Windows Server 2008 上的 C:\ProgramData\Mysql
。C:\ProgramData
目录默认情况下是隐藏的。您需要更改文件夹选项才能查看目录和内容。有关错误日志和理解其内容的更多信息,请参阅 第 7.4.2 节,“错误日志”。
有关可能出现的错误的信息,请同时查阅 MySQL 服务启动时显示的控制台消息。在将 mysqld 安装为服务后,从命令行使用 SC START mysqld_service_name
或 NET START mysqld_service_name
命令查看有关将 MySQL 服务器作为服务启动的任何错误消息。请参阅 第 2.3.3.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 9.0
和C:\Program Files\MySQL\MySQL Server 9.0\data
)不同的位置时,通常会出现这些消息。当 MySQL 升级并安装到新位置,但配置文件未更新以反映新位置时,可能会出现这种情况。此外,旧的和新的配置文件可能会发生冲突。升级 MySQL 时,请务必删除或重命名所有旧的配置文件。
如果您已将 MySQL 安装到
C:\Program Files\MySQL\MySQL Server 9.0
以外的目录,请确保 MySQL 服务器通过使用配置文件(my.ini
)知道这一点。将my.ini
文件放在您的 Windows 目录中,通常是C:\WINDOWS
。要从WINDIR
环境变量的值确定其确切位置,请从命令提示符发出以下命令:C:\> echo %WINDIR%
您可以使用任何文本编辑器(如记事本)创建或修改选项文件。例如,如果 MySQL 安装在
E:\mysql
中,而数据目录是D:\MySQLdata
,则可以创建选项文件并设置[mysqld]
部分以指定basedir
和datadir
选项的值:[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 9.0 # set datadir to the location of your data directory datadir=D:\\MySQLdata
选项文件值中反斜杠的使用规则在 第 6.2.2.2 节,“使用选项文件” 中给出。
如果您更改了 MySQL 配置文件中的
datadir
值,则必须在重新启动 MySQL 服务器之前移动现有 MySQL 数据目录的内容。请参阅 第 2.3.3.2 节,“创建选项文件”。
如果您在没有先停止和删除现有 MySQL 服务的情况下重新安装或升级 MySQL,然后使用 MySQL 配置器配置 MySQL,则可能会看到以下错误:
Error: Cannot create Windows service for MySql. Error: 0
当配置向导尝试安装服务并找到同名的现有服务时,会发生这种情况。
解决此问题的一种方法是在使用配置向导时选择
mysql
以外的服务名称。这使得新服务可以正确安装,但会保留过时的服务。虽然这没有害处,但最好删除不再使用的旧服务。要永久删除旧的
mysql
服务,请在命令行上以具有管理员权限的用户身份执行以下命令:C:\> SC DELETE mysql [SC] DeleteService SUCCESS
如果您的 Windows 版本不提供
SC
实用程序,请从 http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp 下载delsrv
实用程序,并使用delsrv mysql
语法。