问题描述
我是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-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
这会抛出任何包含mysql的行。 -
检查
my.cnf
或mysql.conf
文件是否正确。在12.04中,MySQL是版本5.5,11.10是版本5.1。它可能在conf文件中有一些变化(实际上没有检查过),它可能听起来很傻,但肯定会给你带来一些麻烦。 -
与套接字问题相关的错误通常是指向错误位置的
my.cnf
或mysql.conf
文件的错误,它们通常会显示错误:无法通过套接字连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock’此问题的其他来源与mysql
有关在/etc/init.d
中的文件,它指向错误的文件夹,因为它可能使用的是比系统上实际mysql所需的脚本更旧的脚本(它可能没有正确更新,没有覆盖配置文件等等。)。因此,只需编辑这两个文件中的任何一个,看看它们是否指向其他位置,然后只需执行sudo service mysql restart
来检查它是否有效。 -
要更好地了解mysql的错误特定输出,请执行以下操作:
cat /var/log/mysql.err
– 将显示mysql错误。如果您碰巧看到太多信息,我会像cat /var/log/mysql.err | 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
-
手动配置
sudo mysqld --skip-grant-tables &
手动启动mysqld
服务(请记住添加&否则您必须打开另一个终端。&将进程发送到后台,您可以使用同一终端终止)。 -
以ROOT
mysql -u root mysql
身份登录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
第八种方法
我会添加这个问题,有人面临类似的问题。我尝试了所有的卸载和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
参考资料