“无法生成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
-
my.cnf
文件不在默认目录中。 它应该(默认情况下)位于/etc/my.cnf
或/etc/mysql/my.cnf
。 -
mysql数据文件所在的硬盘驱动器空间不足。 如果数据库太大并占用100%的硬盘驱动器,则服务将失败。
-
升级后检查
my.cnf
文件是否在正确的位置。 根据您的升级方式或升级版本,可能在/etc/my.cnf
或/etc/mysql/my.cnf
,如前所述。 还记得该文件也可以命名为mysql.conf
而不仅仅是my.cnf
。 在从mysql.com下载二进制文件的情况下会发生这种情况。 -
做一个
dmesg
看看mysql服务是什么抛出一个错误消息有帮助,因为它给出了加载错误。 它也可能会说明为什么会这样。 如果您在终端中单独键入dmesg
,它将向您显示世界。 我们想要的是关于mysql的信息所以做这样的事情:dmesg | grep mysql
dmesg | grep mysql
这会抛出任何包含mysql的行。 -
检查
my.cnf
或mysql.conf
文件是否正确。 在12.04中,MySQL是版本5.5,11.10是版本5.1。 它可能在conf文件中有一些变化(实际上没有检查过),它可能听起来很傻,但肯定会给你带来一些麻烦。 -
与套接字问题相关的错误通常是指向错误位置的
my.cnf
或mysql.conf
文件的错误,它们的错误通常会显示为:无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器
此问题的另一个来源与
/etc/init.d
中的mysql
文件有关,它指向错误的文件夹,因为它可能使用的是比系统上实际mysql所需的脚本更旧的脚本(可能不是已正确更新,没有覆盖配置文件等。)。 所以只需编辑这两个文件中的任何一个,看看它们是否指向其他地方,然后只需执行sudo service mysql restart
来检查它是否有效。 -
要更好地了解mysql的错误特定输出,请执行以下操作:
cat /var/log/mysql.err
– 将显示mysql错误。 我会把它变成像cat /var/log/mysql.err | less
如果您碰巧看到太多的信息飞过,那就less
,因为less
会帮助您滚动通过cat
的输出。对于
cat /var/log/mysql.log
如果您看到错误,可能会将其置于问题中,或者评论将有助于更快地回答这个问题。 -
如果您遇到连接问题及其实际运行的服务,请尝试查看服务器的防火墙是否允许通过3306端口(传入连接)进行连接。 然后检查路由器(如果适用)是否未阻塞端口3306.基本上进行网络测试以查看与分配给mysql的端口相关的问题源自何处。
如果一切都好,要测试mysql服务是否正在运行类型service mysql status
作为最后的手段。 如果您碰巧运行mysql但无法登录,请尝试以下操作:
-
停止MySQL服务器:
sudo /etc/init.d/mysql stop
或sudo service mysql stop
-
手动配置手动启动
mysqld
服务sudo mysqld --skip-grant-tables &
(记住要添加&else,你必须打开另一个终端。&将进程发送到后台,你可以使用同一个终端终止)。
-
以ROOT身份登录mysql数据库
mysql -u root mysql
-
键入以下内容,用您的新密码替换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场演出,它运作良好。