介绍服务器启动过程中出现问题的处理建议。有关Windows系统的其他建议,请参见第2.3.5节“Microsoft Windows MySQL Server安装故障处理”.
如果在启动服务器时遇到问题,可以尝试以下方法:
检查错误日志查看服务器不启动的原因。日志文件位于数据目录(通常是
C:\Program Files\MySQL\MySQL Server 8.0\data
在Windows上,/usr/local/mysql/data
对于Unix/Linux二进制发行版,和/usr/local/var
对于Unix/Linux源代码发行版)。在数据目录中查找具有此表单名称的文件
而且host_name
.err
,在那里host_name
. loghost_name
是服务器主机的名称。然后检查这些文件的最后几行。使用尾巴
显示它们:壳>尾巴host_name.err shell> tailhost_name. log
指定正在使用的存储引擎所需的任何特殊选项。您可以创建
my.cnf
归档并指定计划使用的引擎的启动选项。如果您打算使用支持事务表的存储引擎(InnoDB
,NDB
),在启动服务器之前,确保您已经按您想要的方式配置了它们。如果你正在使用InnoDB
表,请参阅第15.8节“InnoDB配置”有关指引及第15.14节“InnoDB启动选项和系统变量”对于选项语法。尽管存储引擎对您省略的选项使用默认值,但Oracle建议您检查可用选项,并为那些默认值不适合您的安装的选项指定显式值。
确保服务器知道在哪里可以找到数据目录.的mysqld服务器使用此目录作为其当前目录。这是它期望找到数据库和写入日志文件的地方。服务器还将pid(进程ID)文件写入数据目录。
在编译服务器时,默认数据目录位置是硬编码的。要确定默认路径设置,请调用mysqld与
——详细
而且——帮助
选项。如果数据目录位于系统上的其他位置,请使用——datadir
选项mysqld或mysqld_safe,在命令行或选项文件中。否则,服务器无法正常工作。作为一种替代——datadir
选项,可以指定mysqld安装MySQL的基本目录的位置——basedir
,mysqld寻找数据
目录。要检查指定路径选项的效果,请调用mysqld这些选项后面跟着
——详细
而且——帮助
选项。例如,如果您将location更改为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
即使拥有正确的所有权,如果在您的系统上运行其他管理应用程序对文件系统各个部分的访问的安全软件,MySQL也可能无法启动。在这种情况下,重新配置该软件以启用mysqld访问它在正常操作期间使用的目录。
验证服务器想要使用的网络接口是否可用。
如果发生下列错误之一,则意味着其他程序(可能是另一个mysqld服务器)正在使用TCP/IP端口或Unix套接字文件mysqld正在尝试使用:
无法启动服务器:Bind on TCP/IP port: Address already in use…
使用ps来确定你是否还有另一个mysqld服务器运行。如果是,请在启动之前关闭服务器mysqld一次。(如果另一个服务器正在运行,并且您确实想运行多个服务器,您可以在中找到关于如何这样做的信息第5.8节“在一台机器上运行多个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.9.4节“DBUG包”.