Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
我尝试完全删除它,尽管这样做是因为依赖项(?)试图安装MariaDB。任何有关我可以做些什么来解决此问题的建议都将受到欢迎。
编辑: /+source/mysql-5.7/+bug/1573279
#1 楼
@ andrew-beerman发布的说明在正确的轨道上,尽管它们对我来说并不十分清楚,并且似乎建议的内容超出了必要。我整理了以上答案,并在bug线程中写了一篇很有帮助的文章。这些是我纠正此问题所采取的步骤:
在
my.cnf file
中备份/etc/mysql
并删除或重命名sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
使用
sudo rm -r /etc/mysql/mysql.conf.d/
删除文件夹/etc/mysql/mysql.conf.d/
验证您没有将
my.cnf
文件保存在其他地方(我在主目录中保存!)或在/etc/alternatives/my.cnf
中使用sudo find / -name my.cnf
备份并删除
/etc/mysql/debian.cnf
文件(不确定是否需要,但以防万一)sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
sudo apt install mysql-server
如果系统日志显示错误,例如“ mysqld:无法读取'/etc/mysql/conf.d/'的目录”创建一个符号链接:
sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
那么该服务应该能够从
sudo service mysql start
开始。就可以了!
评论
经过所有这些操作(我之前做过),我仍然遇到相同的错误问题...
– Serge P
16年4月29日在14:05
您必须从/ etc / mysql目录中删除所有my.cnf。*。查找my.cnf.backup,my.cnf.fallback和my.cnf.migrated-所有这些文件也必须删除(首先备份!)
– hitzi
16年5月3日在8:51
@SergiiP sudo find / -name“ my.cnf”可能派上用场。
– starbeamrainbowlabs
16年5月14日在11:31
mysql-server-core-应该是mysql-server-core-5.7。否则就像一个魅力。谢谢!
– David Tay
16年5月20日在12:56
+1。你让我很快乐!也是早晚!我卡住了。
– Max Yudin
16年7月7日在17:44
#2 楼
今天,在尝试了许多解决方案之后,我遇到了同样的问题,我发现问题是我曾经用来禁用MySQL自动启动的命令sudo systemctl disable mysql.service
,因此要使其正常工作,我再次使用命令sudo systemctl enable mysql.service
重新启用了MySQL服务器并再次运行升级过程,它完美终止。评论
我遇到了同样的问题,同样的解决方案对我也起作用。
–艾伦
16年4月26日在15:13
为我工作。在这里做了所有解决方案之后,mysql在此解决方案之后工作了。
–BłażejMichalik
16年4月29日在14:51
同样在这里-这应该是最高职位。
– a1字母数字
16 Sep 15 '14:32
也为我工作!非常感谢。明确地说,运行:sudo systemctl enable mysql.service,然后运行sudo apt install -f。
–费尔南多·帕拉迪尼(Fernando Paladini)
17年1月25日,0:03
这就是我要做的。我已禁用自动启动,如@naruto所述。我启用了自动启动并运行“ sudo apt upgrade”。现在已修复。应该是最佳答案。这是一个更简单,更标准,更不易出错的解决方案。
–杰克·霍尔特(Jack Holt)
17年8月7日16:00
#3 楼
您的错误消息包含以下行:subprocess installed post-installation script returned error exit status 1
但是,此
installed post-installation script
并未被提及。经过大量修改后,我发现它的名称是(以我为例)/var/lib/dpkg/info/mysql-server-5.7.postinst
。 使用
sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
或您喜欢的编辑器打开此文件。在顶部,将第3行(或类似内容)从
set -e
更改为set -x
,保存文件。 (选项-e
为“错误退出”,-x
表示“明确显示已执行命令”)。运行
sudo dpkg --configure -a --log /tmp/dpkg.log
(--log选项为可选)。如果您知道它将是唯一要升级的软件包,也可以直接运行
apt upgrade
。现在您将获得
mysql-server-5.7.postinst
bash脚本的详细输出,并且可以找出问题所在。就我而言,它尝试(重新)运行
mysql_upgrade
失败,但是对于我的自定义mysql安装来说并不需要。我确定我之前已经成功手动运行过,而且一切都很好。所以我对321行(对较早的mysqld版本尝试281行)表示赞赏,
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
以及之前失败的命令
sudo apt upgrade
(再次运行),成功完成,并且dpkg删除了此程序包的错误状态。 set -x
至set -e
(如上所述)。并且可以选择取消注释mysql-upgrade行。如果将mysql数据分区移动到非标准位置,则可能需要额外的工作。我通过symlink将我的产品从
/var/lib/mysql/data
移到了其他驱动器。然后,可能需要在postinst
脚本操作之前临时删除符号链接。然后,在运行软件包升级后重新创建它。在mysqld debian软件包的下一个次要版本升级之后,
/var/lib/dpkg/info/mysql-server-5.7.postinst
脚本的此问题可能再次出现。评论
我最终清除了所有内容,然后下载社区mysql服务器版本,并从此处手动安装:dev.mysql.com/downloads/mysql
– RyanNerd
16年9月1日在19:34
完全一样的事情发生在我身上,而您的步骤解决了它。对我来说,我的mysql_upgrade调用位于第320行。您能解释一下为什么从postinst脚本调用时它返回非零值的原因吗?
–emiliopedrollo
16 Sep 24 '18:28
@emiliopedrollo不,我不能在这里解释。但是我认为现在的行号是320,因为最近软件包维护者增加了postinstall脚本,前几天在软件更新程序的最后一次运行(包括一个新的mysql-deb-package)中,我观察到了同一件事。 。
–knb
16 Sep 24 '19:25
谢谢!使用set -e,我可以解决确切的问题-MySQL无法访问/etc/mysql/debian.cnf中指定的ubuntu系统用户。因此,我将此用户添加到MySQL并授予了特权,再次运行dpkg并成功了!
–艾伦·汉密尔顿
17-4-24在5:17
#4 楼
此处的说明将其修复在我的服务器上:https://bugs.mysql.com/bug.php?id=72722我可以理解使系统处于不一致状态的痛苦
,但不要担心整体情况,并逐步进行操作
以使系统清洁。 br />使用:dpkg -l | grep mysql(请粘贴输出,但不包括last
列)
第一列表示软件包的当前状态。这是
可能的选项:
ii)已安装rc)删除了保留的配置文件(这应该是您使用'apt-get删除的所有软件包的状态
不会删除/ etc下的配置文件)
为此,您需要运行'apt-get purge
在上面的列表中没有看到任何软件包。
请记住,某些非mysql服务器软件包,例如
python-mysql.connector和python-mysqldb,如果已安装,则不需要被删除
,因为它们对这种情况没有任何影响,但是如果
被删除可能会给使用它们的应用程序带来麻烦。
我们一定会尝试重新访问我们的文档以了解我们如何
保护用户免遭此麻烦。感谢您与我们分享
您的反馈意见。
评论
感谢dpkg -l | grep mysql。它有助于了解方向。
– Max Yudin
16年7月7日在17:47
该命令用于清除错误,它必须是sudo apt-get purge
– Toskan
19年7月27日在6:37
#5 楼
就我而言,使用strace时,我发现/ var / run / mysqld /不存在,并且mysqld无法创建文件mysqld.sock。这些命令解决了我的问题:
mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld
现在:
systemctl start mysql
mysql再次工作:)
评论
我建议您将这些行添加到/ usr / share / mysql / mysql-systemd-start,从第25行开始,然后您不必在每次重新启动后重新创建此目录(抱歉,该行返回在此注释中不起作用) :如果[! -d / run / msyqld];然后mkdir -p -m0755 / run / mysqld || {echo“无法创建/ run / mysqld”; 1号出口; } chown mysql:mysql / run / mysqld || {回声“无法chown / run / mysqld”; 1号出口; } fi
–scoobydoo
16 Jun 30'14:44
#6 楼
就我而言,我可以通过在/etc/apparmor.d/local/usr.sbin.mysqld
中添加# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,
解决问题。有关更多详细信息,请查看我的回答(作者ChristophS)在stackoverflow上。
#7 楼
我遇到过同样的问题。我尝试多次重新安装mysql,但没有成功。我发现问题出在我身上,另一个mysql进程已经在运行。
在详细信息:
我仔细阅读了
/var/log/mysql/error.log
的日志后,发现:[错误]无法启动服务器:在TCP / IP端口上绑定:地址已经在
中使用
[错误]您是否已经在端口上运行了另一台mysqld服务器:
3306吗?应用程序已经在使用该端口。
我使用
ps -aux | grep 3306
对其进行了检查: br />然后我启动了mysql:sudo kill -15 14706
最后mysql对我有用!希望对大家有帮助。
#8 楼
对于WSl Ubuntu 16.04版本,我在这里找到了此有用的文章已解决的步骤
sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
查找此行
mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
将此
service mysql restart
直接添加到数字2的行上方。 />希望获得帮助#9 楼
我最后转到Oracle下载页面,下载
mysql-apt-config_0.8.8-1_all.deb
,并从Oracle repo安装MySQL:sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server
评论
安装->安装错字。愚蠢的SO不允许我纠正一个字符。
–Csaba Toth
18年7月11日在16:54
你为什么去oracle下载mysql
–Sinscary
19年8月7日在8:40
@Sinscary这个答案是从前传来的,但这可能是因为它们的版本比系统软件包管理器的版本新?
– ostrokach
19年8月7日在15:42
#10 楼
我现在在一些服务器上遇到了问题修复程序可以运行
apt install phpmyadmin --reinstall
,它解决了上面的问题(此后无需再触摸mysql)
评论
我在这里有同样的问题。必须卸载phpmyadmin,这以某种方式导致了依赖性问题。重新安装后,一切恢复正常。
从Ubuntu 14到do 16的do-release-upgrade执行从MySQL 5.5到5.7的不受支持的升级,因此预计MySQL会在之后被破坏,如下所示:bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/ + bug / ...
@MarcoMarsala我不知道是否可以说MySQL在Ubuntu 14到16升级后会崩溃,尽管我认为这取决于您的观点。对于普通用户而言,当然不希望LTS升级中断像MySQL这样的事情。令人惊讶的是,尽管在测试过程中没有发现它。
apt install phpmyadmin --reinstall修复了上面的问题,之后无需接触mysql ... go Figure