介绍启动服务器时遇到的故障处理建议。有关Windows系统的其他建议,请参见第2.3.5节,“Microsoft Windows MySQL Server安装故障排除”.
如果你在启动服务器时遇到问题,可以试试下面这些方法:
检查错误日志查看服务器不启动的原因。日志文件位于数据目录(通常是
C:\Program Files\MySQL\MySQL服务器5.7\data
在Windows上,/usr/local/mysql/data
对于Unix/Linux二进制发行版,以及/usr/local/var
Unix/Linux源发行版)。在data目录中查找具有该表单名称的文件
而且host_name
.err
,在那里host_name
. loghost_name
是服务器主机的名称。然后检查这些文件的最后几行。使用尾巴
要显示它们:壳>尾巴host_name.err shell>尾部host_name. log
指定正在使用的存储引擎所需的任何特殊选项。您可以创建
my.cnf
文件并指定计划使用的引擎的启动选项。如果您打算使用支持事务表的存储引擎(InnoDB
,NDB
),请确保在启动服务器之前已按照您希望的方式配置了它们。如果你正在使用InnoDB
表,请参阅章节14.8,“InnoDB配置”有关指引及章节14.15“InnoDB启动选项和系统变量”选项语法。尽管存储引擎对您省略的选项使用默认值,但Oracle建议您检查可用选项,并为任何默认值不适合您的安装的选项指定显式值。
确保服务器知道在哪里可以找到数据目录.的mysqld服务器使用此目录作为其当前目录。这是它期望找到数据库的地方,也是它期望写入日志文件的地方。服务器也写入数据目录中的pid(进程ID)文件。
在编译服务器时,默认数据目录位置是硬编码的。要确定默认路径设置是什么,请调用mysqld与
——详细
而且——帮助
选项。如果数据目录位于系统上的其他位置,请使用——datadir
选项mysqld或mysqld_safe,在命令行或选项文件中。否则,服务器将无法正常工作。作为一种替代——datadir
选项,您可以指定mysqld安装MySQL的基本目录的位置——basedir
,mysqld寻找数据
目录。要检查指定路径选项的效果,请调用mysqld这些选项后面跟着
——详细
而且——帮助
选项。例如,如果将location更改为where的目录mysqld安装后,然后运行以下命令,它将显示使用基本目录/usr/local
:Shell > ./mysqld——basedir=/usr/local——verbose——help
您可以指定其他选项,例如
——datadir
也一样,但是——详细
而且——帮助
一定是最后一个选项。一旦确定了所需的路径设置,就启动服务器
——详细
而且——帮助
.如果mysqld当前正在运行,您可以通过执行这个命令找到它正在使用的路径设置:
Shell > mysqladmin变量
或者:
Shell > mysqladmin -hhost_name变量
host_name
表示MySQL服务器的主机名。确保服务器可以访问数据目录.数据目录及其内容的所有权和权限必须允许服务器读取和修改它们。
如果你得到
Errcode 13
(这意味着没有权限
)起动时mysqld,这意味着数据目录或其内容的特权不允许服务器访问。在这种情况下,您可以更改所涉及的文件和目录的权限,以便服务器有权使用它们。您还可以以根
,但这会引发安全问题,应该避免。将位置更改为数据目录,并检查数据目录及其内容的所有权,以确保服务器具有访问权限。例如,如果数据目录为
/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
即使拥有正确的所有权,如果在您的系统上运行了其他安全软件来管理应用程序对文件系统各个部分的访问,MySQL也可能无法启动。在这种情况下,重新配置该软件以启用mysqld在正常操作时访问它使用的目录。
验证服务器想要使用的网络接口是否可用。
如果出现以下错误之一,则意味着其他程序(可能是另一个mysqld服务器)正在使用TCP/IP端口或Unix套接字文件mysqld正在尝试使用:
无法启动服务器:在TCP/IP端口上绑定:地址已被使用不能启动服务器:在unix套接字上绑定…
使用ps来确定你是否有另一个mysqld服务器运行。如果是,请在启动之前关闭服务器mysqld一次。(如果另一个服务器正在运行,而您确实希望运行多个服务器,则可以在第5.7节“在一台机器上运行多个MySQL实例”.)
如果没有其他服务器正在运行,请执行该命令
远程登录
.(MySQL默认端口号为3306)然后按Enter键几次。如果没有得到类似的错误消息your_host_name
tcp_ip_port_number
telnet:无法连接到远程主机:连接被拒绝
,一些其他程序正在使用TCP/IP端口mysqld正在努力使用。找到这是什么程序,然后关闭它,或者告诉mysqld监听不同的端口——港口
选择。在这种情况下,当使用TCP/IP连接到服务器时,为客户端程序指定相同的非默认端口号。端口不可访问的另一个原因是您正在运行的防火墙阻止了到该端口的连接。如果是,请修改防火墙设置,允许该端口访问。
如果服务器启动了,但您无法连接到它,请确保您有一个条目
设置
它是这样的:127.0.0.1 localhost
如果你不能mysqld方法创建跟踪文件以查找问题
——调试
选择。看到章节5.8.3,“DBUG包”.