2.10.2.1 对启动 MySQL Server 的问题进行故障排除

本节提供了有关启动服务器问题的疑难解答建议。有关 Windows 系统的其他建议,请参阅第 2.3.5 节“对 Microsoft Windows MySQL Server 安装进行故障排除”

如果您在启动服务器时遇到问题,请尝试以下操作:

shell> tail host_name.err
shell> tail host_name.log

尽管存储引擎将默认值用于您忽略的选项,但是 Oracle 建议您检查可用选项,并为默认值不适合您安装的所有选项指定显式值。

编译服务器时,默认数据目录位置是硬编码的。要确定默认路径设置是什么,请使用--verbose--help选项调用mysqld。如果数据目录位于系统的其他位置,请在命令行或选项文件中使用mysqldmysqld_safe--datadir选项指定该位置。否则,服务器将无法正常工作。作为--datadir选项的替代方法,您可以将--basedir指定到安装 MySQL 的基本目录的位置mysqld,然后mysqld在此处查找data目录。

要检查指定路径选项的效果,请先调用mysqld,然后再调用--verbose--help选项。例如,如果将位置更改为mysqld的安装目录,然后运行以下命令,则显示使用/usr/local的基本目录启动服务器的效果:

shell> ./mysqld --basedir=/usr/local --verbose --help

您还可以指定其他选项,例如--datadir,但是--verbose--help必须是最后一个选项。

确定所需的路径设置后,无需--verbose--help即可启动服务器。

如果mysqld当前正在运行,则可以通过执行以下命令来找出其正在使用的路径设置:

shell> mysqladmin variables

Or:

shell> mysqladmin -h host_name variables

如果在启动mysqld时得到Errcode 13(即Permission denied),则意味着数据目录或其内容的特权不允许服务器访问。在这种情况下,您可以更改所涉及文件和目录的权限,以便服务器有权使用它们。您也可以使用root来启动服务器,但这会引发安全问题,应避免使用。

将位置更改为数据目录,并检查数据目录及其内容的所有权,以确保服务器具有访问权限。例如,如果数据目录为/usr/local/mysql/var,则使用以下命令:

shell> ls -la /usr/local/mysql/var

如果数据目录或其文件或子目录不属于您用于运行服务器的登录帐户所有,请将其所有权更改为该帐户。如果该帐户名为mysql,请使用以下命令:

shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql/var

即使拥有正确的所有权,如果您的系统上运行着其他安全软件来 Management 对文件系统各个部分的应用程序访问,则 MySQL 可能仍无法启动。在这种情况下,请重新配置该软件以使mysqld能够访问其在正常操作期间使用的目录。

如果发生以下任一错误,则意味着其他某个程序(也许是其他mysqld服务器)正在使用mysqld尝试使用的 TCP/IP 端口或 Unix 套接字文件:

Can't start server: Bind on TCP/IP port: Address already in use
Can't start server: Bind on unix socket...

使用 ps 来确定您是否正在运行另一台mysqld服务器。如果是这样,请在再次启动mysqld之前关闭服务器。 (如果另一台服务器正在运行,并且您确实要运行多台服务器,则可以在第 5.7 节“在一台机器上运行多个 MySQL 实例”中找到有关如何运行的信息。)

如果没有其他服务器在运行,请执行命令telnet your_host_name tcp_ip_port_number。 (默认的 MySQL 端口号是 3306.)然后按 Enter 键两次。如果未收到telnet: Unable to connect to remote host: Connection refused之类的错误消息,则其他某个程序正在使用mysqld尝试使用的 TCP/IP 端口。跟踪这是什么程序并将其禁用,或者使用--port选项告诉mysqld监听其他端口。在这种情况下,使用 TCP/IP 连接到服务器时,请为 Client 端程序指定相同的非默认端口号。

端口可能无法访问的另一个原因是您正在运行的防火墙阻止了与该端口的连接。如果是这样,请修改防火墙设置以允许访问该端口。

如果服务器启动但无法连接到服务器,请确保在/etc/hosts中有一个如下所示的条目:

127.0.0.1       localhost
首页