MySQL根本没有开始

时间:2017-04-16 18:20:00

标签: mysql linux ubuntu

这真是太棒了昨天我得到了同样的错误并且我调试了它但是今天我不记得该做什么,因为我这样做是为了禁食。

当我做的时候:

sercice mysql start

我收到此消息:

Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details.

出于这个原因我做了:     systemctl status mysql.service

并获得:

Apr 16 18:11:25 darphus.xen.prgmr.com systemd[1]: Unit mysql.service entered failed state.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: mysql.service holdoff time over, scheduling restart.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Stopping MySQL Community Server...
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Starting MySQL Community Server...
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: mysql.service start request repeated too quickly, refusing to start.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Failed to start MySQL Community Server.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Unit mysql.service entered fai

journalctl -xn给:

Logs begin at Sun 2017-04-16 17:58:44 UTC, end at Sun 2017-04-16 18:16:35 UTC
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/pickup[938]: warning: 868F625E66: 
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/pickup[938]: 868F625E66: uid=0 fro
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/proxymap[941]: warning: mysql:/etc
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/cleanup[1361]: warning: proxy:mysq
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/cleanup[1361]: warning: 868F625E66
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/pickup[938]: warning: 8744E25E66: 
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/pickup[938]: 8744E25E66: uid=0 fro
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/proxymap[941]: warning: mysql:/etc
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/cleanup[1362]: warning: proxy:mysq
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/cleanup[1362]: warning: 8744E25E66

我认为在互联网上尝试了所有技巧,今天没有任何效果。

请帮助我,因为我的所有网站都因此而失败。

6 个答案:

答案 0 :(得分:11)

当您尝试更改/etc/mysql/my.cnf.

中的内容时,通常会出现此问题

所以重新安装MySQL应该解决问题试试这个:

sudo apt purge mysql-server mysql-common

sudo apt autoremove mysql-server mysql-common

再次重新安装

sudo apt-get update sudo apt-get install mysql-server

检查一下: https://askubuntu.com/questions/392438/mysql-job-failed-to-start

注意:此解决方案将删除所有数据库数据!所以要注意你在做什么。

答案 1 :(得分:4)

@Lotfio Lakehal的answer将解决您的问题但应该被视为最后的手段 - 您当然不希望在具有您需要的数据的数据库上运行它,因为它将删除所有配置值进行中。更好的方法是找出my.cnf中导致问题的原因并修复它。 MySQL内置了这种能力。

mysqld --help --verbose

上面的命令将模拟启动你的mysql服务器。如果它不能,它将给出错误消息和配置文件的错误描述。

例如,我设置了一个带有一些无效数据的测试配置文件,当我运行上面的命令时,我得到了以下内容:

  

错误:在配置文件中找到没有前面组的选项:/etc/mysql/my.cnf at line:22

这使我可以轻松转到配置文件并删除或编辑有问题的配置,希望您可以修复所述配置文件,而无需完全重新安装服务器。

只是为了澄清这绝不是对answer的贬低,之前的答案将解决所有问题的99%,但应该被视为最后的手段。理想情况下,您希望解决问题并理解其发生的原因,以便将来不会犯同样的错误。

答案 2 :(得分:3)

我在使用mysql 5.7的ubuntu 18.04上运行时遇到了同样的问题。我做的第一件事是转到mysql错误日志,它应该在/var/log/mysql/error.log中。

我在其中找到以下行:

[ERROR] InnoDB: Cannot allocate memory for the buffer pool

所以看起来像是内存问题,我检查了系统日志中是否提到了MySQL:

grep mysql syslog

显示了以下内容:

kernel: [21270406.665399] Out of memory: Kill process 9674 (mysqld) score 251 or sacrifice child

我检查了我是否具有“交换形式”的“备用内存”。

free -m

显示了以下内容:

total used free shared buff/cache available Mem: 985 522 69 45 393 276 Swap: 0 0 0

这意味着我们必须设置交换空间:

Swap: 0 0 0

就我而言,mysql在DigitalOcean上,其指南非常出色,因此请您注意以下几点: How To Add Swap Space on Ubuntu 18.04

答案 3 :(得分:3)

此答案应与@“ James Lendrem” answer一起阅读。

如果您对mysql配置文件进行了更改或添加了任何内容,请尝试删除所做的操作。

首先检查syslog文件,这可能会为您提供线索:

grep mysql /var/log/syslog | grep ERROR

此命令在系统日志中搜索对术语“ mysql”的任何引用,然后将那些结果限制为包含“ ERROR”的结果。

接下来查看各种配置文件。如果您编辑了特定的配置文件,请从此处开始。否则,请查看以下目录中的所有配置文件:

ls -l /etc/mysql/*.cfg
ls -l /etc/mysql/mysql.conf.d/
ls -l /etc/mysql/conf.d/

如果您更改了任何配置文件中的任何内容,请(重新)启动mysql服务器:

service mysql restart

# or else you could use for the first time:
service mysql start

答案 4 :(得分:1)

我在mysql 5.7的ubuntu 18.04上运行时遇到了同样的问题

在日志文件中,我找到了以下几行:

Jul 13 01:25:35 r-lap audit[11196]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=11196 comm="mysqld" req
Jul 13 01:25:35 r-lap kernel: audit: type=1400 audit(1531425335.671:116): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/

在停止apparmor时,mysql启动成功,并显示一条消息,提示无法启用ssl支持。停止服务。

要生成证书, 运行

sudo mysql_ssl_rsa_setup --datadir /var/lib/mysql

您的情况下的数据目录可能有所不同。 然后做

sudo -i
cd /var/lib/mysql 
chown mysql:mysql ./*

这将为生成的证书和密钥文件设置权限。

接下来,您可以同时启动apparmor和mysql。

这解决了我的问题。

由于我没有单独尝试,因此我不知道是重新启动了Apparmor还是生成了用于解决此问题的ssl密钥和证书。

注意:我后来发现this thread

答案 5 :(得分:0)

对我来说,我使用 Stacer 等工具运行了一些缓存清除操作以释放空间,然后 MySQL 开始出现问题。

先用这个来获取一些线索

grep mysql /var/log/syslog | grep ERROR

如果错误显示,无法打开文件“/var/log/mysql/error.log”进行错误记录:没有这样的文件或目录 然后很明显,日志文件被清理了。

使用它首先创建 MySQL 目录并授予 MySQL 使用该文件夹的所有权限。

> sudo mkdir /var/log/mysql
> sudo chown -R mysql:mysql /var/log/mysql
> sudo service mysql restart

此方案与 my.cnf 文件无关,对数据完全安全。