在Kubuntu 16.04上安装MySQL 5.7失败了。

5
Configuring mysql-server-5.7 (5.7.11-0ubuntu6)  
insserv: warning: current start runlevel(s) (empty) of script `mysql' overrides LSB defaults (2 3 4 5). 
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `mysql' overrides LSB defaults (0 1 6).
mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server 
Upgrade process encountered error and will not continue. 
mysql_upgrade failed with exit status 11 
dpkg: error with
   mysql-server-5.7 (--configure):

apt-get remove 返回相同的结果。

这个错误是在从15.10升级到16.04时出现的。

7个回答

14

对我来说情况完全相同:运行级别警告和mysql_upgrade错误。

我想这是因为我禁用了mysql服务,启用它可以解决问题:

sudo systemctl enable mysql


这是关于此问题的错误报告:https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1605948 - nachtigall
保存我的屁股,baga - Light.G

2
我刚遇到了这个问题,这里有一个相似的错误报告:https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1584287 在我的情况下,我将mysql.service设置为禁用状态,而mysql_upgrade脚本似乎无法在此情况下启动服务器。我启用了该服务(不需要启动它),并重新运行了升级。升级后正常工作后,我停止了服务并再次禁用了它。
我不确定还有什么其他原因会引起这个问题,但如果有人遇到该服务被禁用的情况,请在升级期间启用它。

0

手动删除MySQL服务器的所有文件


0

看起来mysql-server现在被mariadb替代了

安装maridb-server解决了这个问题。

sudo apt-get install mariadb-server

注意:您不会得到您的数据库。使用命令mysql_secure_installation重置mysql密码。


0

以下方法适用于我,找到了解决方案 - 这里

  1. sudo update-alternatives --remove my.cnf /etc/mysql/my.cnf.migrated
  2. sudo service mysql start

0
在我的情况下,我可以通过更改apparmor(在使用plasma的kubuntu 16.04上)来解决问题。 我查看了安装错误消息建议的journalctl -xe
[....] Starting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

我发现了apparmor拒绝访问的消息:

AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/home/system/var/log/mysql/error.log" pid=32610 comm="mysqld" request

实际上,基础目录/home/system/...是存在的,但是/etc/apparmor.d/usr.sbin.mysqld不允许访问。

因此,将以下行添加到/etc/apparmor.d/local/usr.sbin.mysqld中解决了我的问题:

# For more details, please see /etc/apparmor.d/local/README.

# 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,

别忘了重新启动apparmor,以及重新安装mysql(例如:apt-get install --reinstall mysql-common mysql-server或者你自己的安装方式)。

我完全不知道为什么(以及从何时开始)目录/home/system存在,以及为什么mysql指向那里。但是总有一天我会弄清楚的... ;)


-1

我在这里找到了解决方案here

  1. 删除所有mysql文件: rm -r /var/lib/mysql*
  2. 安装mysql自身数据库: mysql_install_db -u mysql (可能对于较新的系统无效,但不用担心)
  3. 为systemd启用服务: systemctl unmask mysql.service
  4. 然后启动mysql service service mysql start

2
注意!这个 rm -rf /var/lib/mysql 命令也会删除所有用户数据库! - knb
是的,确实如此。在第一条声明中已经说明了。这是由于“不兼容”的新mysql文件导致服务无法启动。 - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接