这真是太棒了昨天我得到了同样的错误并且我调试了它但是今天我不记得该做什么,因为我这样做是为了禁食。
当我做的时候:
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
我认为在互联网上尝试了所有技巧,今天没有任何效果。
请帮助我,因为我的所有网站都因此而失败。
答案 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 文件无关,对数据完全安全。