首次安装和运行 MySQL 时,您可能会遇到某些错误,导致 MySQL 服务器无法启动。本节将帮助您诊断和纠正其中一些错误。
在对服务器问题进行故障排除时,您的第一个资源是 错误日志。MySQL 服务器使用错误日志记录与阻止服务器启动的错误相关的信息。错误日志位于您的 my.ini
文件中指定 的 数据目录 中。默认数据目录位置为 C:\Program Files\MySQL\MySQL Server 8.4\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 8.4
和C:\Program Files\MySQL\MySQL Server 8.4\data
)。这种情况可能发生在升级 MySQL 并安装到新位置时,但配置文件未更新以反映新位置。此外,旧的和新的配置文件可能会发生冲突。在升级 MySQL 时,请务必删除或重命名所有旧的配置文件。
如果您将 MySQL 安装到
C:\Program Files\MySQL\MySQL Server 8.4
以外的目录,请确保 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 8.4 # 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
语法。