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

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

我刚刚将11.10升级到12.04。

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

当我尝试:

sudo start mysql 

我收到一个错误:

 start: Job failed to start 

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

(如果这有点重要,我禁用自动启动以下建议)


更新1:

两个输出:

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

是空的。

输出dmesg | grep mysql 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然后重新安装。

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

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

接下来清除MySQL(这将删除php5-mysql和phpmyadmin以及许多其他库,因此准备在此之后重新安装一些项目。

 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 

最后重新安装任何缺少的软件包,如phpmyadmin和php5-mysql。

 sudo dpkg-reconfigure mysql-server-5.5 

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

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

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

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

通过以详细的非守护进程模式启动服务器并观察输出,将显示大多数错误:

 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-client
要重新安装 – sudo 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 dmesg | grep mysql这会抛出任何包含mysql的行。

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

  6. 套接字问题相关的错误通常是指向错误位置的my.cnfmysql.conf文件的错误,它们的错误通常会显示为:

    无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器

    此问题的另一个来源与/etc/init.d中的mysql文件有关,它指向错误的文件夹,因为它可能使用的是比系统上实际mysql所需的脚本更旧的脚本(可能不是已正确更新,没有覆盖配置文件等。)。 所以只需编辑这两个文件中的任何一个,看看它们是否指向其他地方,然后只需执行sudo service mysql restart来检查它是否有效。

  7. 要更好地了解mysql的错误特定输出,请执行以下操作:

    cat /var/log/mysql.err – 将显示mysql错误。 我会把它变成像cat /var/log/mysql.err | less 如果您碰巧看到太多的信息飞过,那就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. 手动配置手动启动mysqld服务

    sudo mysqld --skip-grant-tables &

    (记住要添加&else,你必须打开另一个终端。&将进程发送到后台,你可以使用同一个终端终止)。

  3. ROOT身份登录mysql数据库

    mysql -u root 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 

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

在/ var /日志/新贵/

对于mysql

/var/log/upstart/mysql.log

当我打开它有这个消息

第15行/etc/apparmor.d/tunables/global中/etc/apparmor.d/usr.sbin.mysqld的AppArmor解析器错误:无法打开’tunables / home’

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

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

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

@ {}用户主目录= /家庭/

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

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

之后我就能重启服务了

在我的情况下,它比这里的一些答案容易。 我发现了启动板上的相关错误,修复程序如评论9中所述:

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

升级后我发现mysql-server / mysql-server-5.5没有安装,也没有安装5.1。 我将my.cnf重命名为my.cnf_old,我尝试安装mysql-serven。 在安装过程中出现错误消息,指出无法设置root密码。 在此之后,我检查了我的配置,apparmor等。 一切似乎都没问题。 我的下一次尝试是重新配置mysql-server,但它抱怨该软件包没有完全安装。 所以我决定卸载并在这个apt-get修复包中,现在它正在工作。 我不知道为什么因为我什么都没改变。

我有类似的问题,但很快被追踪到apparmor,我记得曾经给过我这个问题。

如果您对这些设置进行了更改,并且系统使用了apparmor,您可能还需要调整/etc/apparmor.d/usr.sbin.mysqld。 例如。 这些行被添加(允许符号链接到my.cnf,并允许读取符号链接文件,大概):

/ usr / sbin / mysqld {… /etc/mysql/*.cnf lr,/path/to/symlinked/my.cnf r,…}

在我的情况下,我尝试在全新安装的Ubuntu 12.04上安装MySQL,但我不明白为什么它为我设置“root”用户的密码时出错。 我尝试了上面的所有解决方案,但无所事事。

然后我决定清除/删除所有内容,我卸载了MySQL服务器并删除了所有文件夹(/ etc / mysql /和/ var / lib / mysql /),最后还要感谢一种随机性,它没有给出任何错误。重新安装,我能够设置密码并启动服务器实例。

在终端中你可以再次安装它,并使它运行my.cnf你可以输入:

 sudo apt-get install mysql-server-5.1 sudo apt-get --reconfigure mysql-server-5.1 sudo apt-get update sudo start mysql my.cnf 

它可能会这样工作。

我很难在/etc/mysql/my.conf [mysqld]下添加performance_schema导致此失败。 删除该行,mysql能够重新启动。

编辑:结果一个ram的gig仅仅不足以在启用performance_schema的情况下启动mysqld。 我碰到了3场演出,它运作良好。