Kubuntu 16.04上的MySQl 5.7安装失败

时间:2016-04-22 21:43:09

标签: mysql linux ubuntu

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 个答案:

答案 0 :(得分:13)

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

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

sudo systemctl enable mysql

答案 1 :(得分:2)

我刚刚遇到这个问题,这里有一个非常相似的错误报告:https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1584287

在我的情况下,我将def haversine(lon1, lat1, lon2, lat2): """ Calculate the great circle distance between two points on the earth (specified in decimal degrees) """ # convert decimal degrees to radians lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # haversine formula dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2 c = 2 * asin(sqrt(a)) km = 6367 * c return km 设置为禁用,mysql.service脚本在这种情况下似乎无法启动服务器。我启用了服务(不需要启动它)并重新运行升级。在那之后,我停止了服务并再次禁用它。

我不确定还有什么可能导致此问题,但如果有人在禁用该服务时遇到此问题,请启用它以进行升级。

答案 2 :(得分:0)

Manualy删除所有MySQL服务器文件

答案 3 :(得分:0)

似乎mysql-server现在已替换为mariadb

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

sudo apt-get install mariadb-server

注意: - 您不会获得数据库。使用命令mysql_secure_installation

重置mysql密码

答案 4 :(得分:0)

在我的情况下,我可以通过更改apparmor(使用等离子在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 DENIED消息:

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指向那里。但有一天有希望弄明白......;)

答案 5 :(得分:0)

以下为我工作,找到了解决方案 - here

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

答案 6 :(得分:-1)

我找到了解决方案here

  1. 删除所有mysql的文件: <div class="roundHex"></div>
  2. 安装mysql自我数据库: rm -r /var/lib/mysql* (可能不适用于较新的系统,但不要担心)
  3. 为systemd启用服务:mysql_install_db -u mysql
  4. 然后启动mysql systemctl unmask mysql.service