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


56

我是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

[ 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似乎自动消失了,必须重新安装。

Answers:


48

检查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。


1
优秀的。发挥了魅力。所有再次工作。一个注意事项:我不必删除此目录sudo rm /etc/mysql/ -R-就我而言它根本不存在。反正-幸运的是,这只是一个本地安装测试WordPress的..神奇会发生在一个真正的服务器O_O什么
拉德克

apt-get --reinstall install mysql-server-xx为我完成了这项工作。
Yashima 2013年

这对我apt-get update有用,但是我应该事先做一下,因为它删除了dovecot和php5-mysql。我只能在更新后重新安装这些。一旦完成,一切都会再次正常。
AntonChanning

我得到了-bash: cd: /var/lib/mysql/: Permission deniedsudo -i甚至无法使用。
夏洛特

@LittleBigBot我进行了更改,应该可以解决此问题。
2014年


12

我遇到了同样的问题,对我来说,InnoDB日志文件的大小与mysql期望的大小不同,并且在升级过程中无提示地失败了。

我有一个自定义配置文件,该文件在升级到12.04时就消失了,该文件将日志文件大小设置为默认配置以外的其他值。

您必须除去以下文件:/ var / lib / mysql / ib_logfile *

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


答对了。在我们的案例中,开发人员已经更改了innodb的一些配置设置(他和我都不知道这可能会引起问题)。这阻止了mysql的启动。删除这些配置文件将允许MySQL启动。
gaoshan88

Bingo-更改了innodb_log_file_size的配置设置。
tweak2 2014年

9

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

sudo mysqld --verbose

7

我遇到了同样的问题,但以上答案均无济于事。因此,作为最后的希望,我试图释放一些磁盘空间。我只是从/ var / log中删除了不必要的日志文件,从而释放了2.5G的空间。然后MySQL正常启动。


是的,这也是我的问题。像过去一样,mysql没有在启动过程中启动。后来是呈现给终端的系统信息。“ /的使用率:95.1%”因此,没有足够的可用空间来启动mysql(和其他进程)。我需要进行一些文件清理,并且mysql启动没有问题。
Screenack 2013年

这是我的情况。光盘清理和Mysql开始工作。
谢尔盖·罗曼诺夫

5

有时会发生这种情况,尽管有几个可能导致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这将使您丢掉任何包含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服务器

    此问题的另一个来源与mysql文件有关,/etc/init.d因为它指向错误的文件夹,因为它使用的脚本可能比系统上实际mysql所需的脚本更旧(它可能未正确更新,没有覆盖。配置文件等)。因此,只需编辑这两个文件中的任何一个,看看它们是否指向其他地方,然后简单地执行a 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 stop 要么 sudo service mysql stop

  2. mysqld使用手动配置手动启动服务

    sudo mysqld --skip-grant-tables &

    (请记住添加&,否则您将不得不打开另一个终端。&将进程发送到后台,您可以在使用同一终端的情况下终止运行)。

  3. ROOT身份登录到mysql数据库

    mysql -u root mysql

  4. 输入以下内容,用新密码替换MyPASSWORD

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

这应该足以再次以root用户身份登录到Mysql服务。希望能帮助到你。


感谢您的及时反馈。/etc/mysql/my.cnf我的情况是my.cnf文件。那是正确的位置吗?dmesg给了我很多我无法理解的输出:/我确实安装了5.1-这会带来什么后果吗?
radek

1
如果找到文件,请不要担心位置。让我更新答案以更好地了解dmesg中的mysql输出。
Luis Alvarado 2012年

4

升级到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

4

如果有人遇到类似问题,我将添加此内容。我尝试了所有卸载并重新安装均无济于事。找到解决方案的关键是新贵将错误日志放置在此文件夹中

/ var / log / upstart /

对于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 /

@ {HOMEDIRS} = / home /

有人在这里面临类似的问题

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

然后我就可以重新启动服务



1

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


1

我遇到过类似的问题,但是很快就被追到了装甲兵,我记得以前曾给我这个问题。

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

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


1

就我而言,我尝试在全新的Ubuntu 12.04安装上安装MySQL,但我不明白为什么在为“ root”用户设置密码时会出现错误。我尝试了上面所有的解决方案,但无济于事。

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


0

在终端中,您可以再次安装它,并使其运行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

它可能以这种方式工作。


0

我有,添加麻烦performance_schema[mysqld]/etc/mysql/my.conf导致了这个错误。删除该行,mysql可以再次启动。

编辑:事实证明,一公羊的内存不足以启动启用了performance_schema的mysqld。我碰到3个演出,它工作正常。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.