当前位置: 首页>>技术问答>>正文


“无法生成mysql主进程:无法执行:没有这样的文件或目录”

, ,

问题描述

我是MySQL的新手,所以请耐心等待。

我刚刚将11.10升级到12.04。

一切似乎没有任何打嗝,所有我的软件和设置工作正常。除了MySQL。

当我尝试:

sudo start mysql

我收到一个错误:

start: Job failed to start

我在哪里可以诊断出问题所在?并且(希望) – 如何解决这个问题?

(我禁用自动启动以下建议如何停止apache2,mysql在计算机启动时自动启动?,如果它有一些重要性)


更新1:

两个输出:

cat /var/log/mysql.err 
cat /var/log/mysql.log

是空的。

dmesg | grep mysql的输出:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

更新2:

如下面的AWinter所示 – 似乎MySQL在升级后自动消失并且必须重新安装。

最佳解决方法

检查是否已卸载mysql-server-5.1软件包,看起来它可能在升级后仍然存在。我有同样的错误,不得不清除MySQL服务器5.1和5.5然后re-install。

首先备份你的/var /lib /mysql /目录只是为了安全起见。

sudo cp -R /var/lib/mysql/ ~/mysql

接下来清除MySQL(这将删除php5-mysql和phpmyadmin以及其他一些库,所以在此之后准备好re-install的一些项目。

sudo apt-get purge mysql-server-5.1 mysql-common

删除文件夹/etc /mysql /及其内容

sudo rm /etc/mysql/ -R

接下来检查你的旧数据库文件是否仍然在/var /lib /mysql /中,如果它们没有,那么将它们复制回文件夹然后chown root:root

(只有在文件不再存在时才运行这些)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

接下来安装mysql服务器

sudo apt-get install mysql-server

最后re-install任何缺少的软件包,如phpmyadmin和php5-mysql。

次佳解决方法

sudo dpkg-reconfigure mysql-server-5.5

第三种解决方法

我有同样的问题,对我而言,InnoDB日志文件的大小与mysql的预期不同,并且在升级过程中无声地失败。

我有一个自定义配置文件,在升级到12.04时被清除,它将日志文件大小设置为默认配置以外的其他大小。

你必须删除文件:/var /lib /mysql /ib_logfile *

文件消失后,mysql现在可以启动并创建默认大小的新日志文件。

第四种方法

通过以详细的non-daemon模式启动服务器并观察输出,将显示大多数错误:

sudo mysqld --verbose

第五种方法

我有同样的问题,但上面的答案都没有帮助我。所以作为最后的希望,我试图释放一些磁盘空间。我只是从/var /log中删除了不必要的日志文件,它释放了一些2.5G空间。然后MySQL正常启动。

第六种方法

这有时会发生,虽然有几个不同的问题可能使mysql无法启动,但我会在这里写一些我所知道的最常见的问题:

注意 – 因为解释了最常见的问题,我假设您已经尝试删除和安装,或者只是重新安装mysql服务,如下所示:

安装 – 要删除的sudo apt-get install mysql-server mysql-client – 要清除的sudo apt-get remove mysql-server mysql-client(删除文件+配置) – 要重新安装的sudo apt-get purge mysql-server mysql-clientsudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnf文件不在默认目录中。它应该(默认情况下)位于/etc/my.cnf/etc/mysql/my.cnf中。

  2. mysql数据文件所在的硬盘驱动器空间不足。如果数据库太大并占用100%的硬盘驱动器,则服务将失败。

  3. 升级后检查my.cnf文件是否在正确的位置。根据您的升级方式或升级版本,可能如前所述,它位于/etc/my.cnf/etc/mysql/my.cnf中。还要记住,该文件也可以命名为mysql.conf,而不仅仅是my.cnf。在从mysql.com下载二进制文件的情况下会发生这种情况。

  4. 执行dmesg以查看mysql服务是什么抛出错误消息有帮助,因为它给出了加载错误。它也可能会说明为什么会这样。如果您在终端中单独键入dmesg,它将向您显示世界。我们想要的是关于mysql的信息,所以做这样的事情:dmesg | grep mysql这会抛出任何包含mysql的行。

  5. 检查my.cnfmysql.conf文件是否正确。在12.04中,MySQL是版本5.5,11.10是版本5.1。它可能在conf文件中有一些变化(实际上没有检查过),它可能听起来很傻,但肯定会给你带来一些麻烦。

  6. 与套接字问题相关的错误通常是指向错误位置的my.cnfmysql.conf文件的错误,它们通常会显示错误:无法通过套接字连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock’此问题的其他来源与mysql有关在/etc/init.d中的文件,它指向错误的文件夹,因为它可能使用的是比系统上实际mysql所需的脚本更旧的脚本(它可能没有正确更新,没有覆盖配置文件等等。)。因此,只需编辑这两个文件中的任何一个,看看它们是否指向其他位置,然后只需执行sudo service mysql restart来检查它是否有效。

  7. 要更好地了解mysql的错误特定输出,请执行以下操作:cat /var/log/mysql.err – 将显示mysql错误。如果您碰巧看到太多信息,我会像cat /var/log/mysql.err | less那样制作,因为less将帮助您滚动浏览cat的输出。同样适用于cat /var/log/mysql.log如果您看到错误,可能会将其置于问题中,或者评论将有助于更快地回答这个问题。

  8. 如果您遇到连接问题及其实际运行的服务,请尝试查看服务器的防火墙是否允许通过3306端口(传入连接)进行连接。然后检查路由器(如果适用)是否未阻塞端口3306.基本上进行网络测试以查看与分配给mysql的端口相关的问题源自何处。

如果一切正常,要测试mysql服务是否正在运行,请输入service mysql status类型

作为最后的手段。如果您碰巧运行mysql但无法登录,请尝试以下操作:

  1. 停止MySQL服务器:sudo /etc/init.d/mysql stopsudo service mysql stop

  2. 手动配置sudo mysqld --skip-grant-tables &手动启动mysqld服务(请记住添加&否则您必须打开另一个终端。&将进程发送到后台,您可以使用同一终端终止)。

  3. 以ROOT mysql -u root mysql身份登录mysql数据库

  4. 键入以下内容,用新密码替换MyPASSWORD UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; EXIT;

这应该是以root身份登录到您的Mysql服务。希望能帮助到你。

第七种方法

升级到Ubuntu Server 12.04 LTS后,我遇到了同样的问题

sudo apt-get install mysql-server 

足以解决它,虽然它抱怨旧的spotweb数据库。我通过删除spotweb修复了这个问题:

sudo apt-get purge spotweb

并重新配置mysql:

sudo dpkg-reconfigure mysql-server-5.5

第八种方法

我会添加这个问题,有人面临类似的问题。我尝试了所有的卸载和re-installing无济于事。找到解决方案的关键是upstart将错误日志放在此文件夹中

在/var /日志/新贵/

对于mysql

/var/log/upstart/mysql.log

当我打开它有这个消息

AppArmor parser error for /etc/apparmor.d/usr.sbin.mysqld in /etc/apparmor.d/tunables/global at line 15: Could not open ‘tunables/home’

当我查看/etc/apparmor.d/tunables/文件夹时,我错过了主文件,所以我创建了一个

gedit /etc/apparmor.d/tunables/home并从另一台具有这些非注释行的计算机中复制内容

@{HOME}=@{HOMEDIRS}/*/ /root/

@{HOMEDIRS}=/home/

有人在这里遇到类似的问题

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

之后我就能重启服务了

第九种方法

在我的情况下,它比这里的一些答案容易。我找到了related bug on launchpad,修复程序如评论9中所述:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1309.html,未经允许,请勿转载。