在Ubuntu 16.04上升级到MySQL 5.7.15时崩溃


13

昨晚我尝试升级我的Ubuntu OS,而MySQL 5.7.15就是其中之一。似乎升级成功,因为mysql正常工作,但是安装过程已停止处理此消息:

This installation of MySQL is already upgraded to 5.7.15, 
use --force if you still need to run mysql_upgrade

我无法以必需的方式取消安装过程,而只能将其杀死。因此,这可能会引起一些问题,并且对于其他安装(将来),它也会尝试再次执行。

如何防止或解决此升级?

Answers:


12

此解决方案解决了我的问题:

  1. 使用权限备份数据库文件:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. 删除mysql文件:

    sudo rm -rv /etc/mysql 
    
  3. 通过运行完全删除MySQL:

    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
    

    建议使用Synaptic

  4. 创建以下文件夹:

    sudo mkdir -p /etc/mysql/conf.d
    

    mysql安装程序没有自动执行,我也不知道为什么。

  5. 再次安装MySQL

    sudo apt install mysql-server
    

    sudo apt install lamp-server^取而代之的是,我为PHP开发安装了其他依赖项。

  6. 停止MySQL:

    sudo service mysql stop 
    
  7. 还原数据库和文件:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. 重新启动MySQL:

    sudo service mysql start 
    

1
dpkg:清理时出错:安装了子进程的安装后脚本返回了错误退出状态1处理时遇到错误:mysql-server-5.7
Stevie G

关键是去除:sudo rm /var/cache/debconf/config.datsudo rm /var/cache/debconf/passwords.datsudo rm /var/cache/debconf/templates.dat。然后清除所有内容。然后重新启动系统。
Stevie G

我遇到了同样的问题,并通过此过程解决了问题。我建议在清除MySQL之后重新启动系统。看来这可以防止Stevie报告的问题。
Tsutomu

4

我设法解决了这个问题,而不必清除所有内容。似乎问题在于从未创建过sys模式数据库,因此这是解决方案:

  1. https://github.com/mysql/mysql-sys克隆并克隆到克隆的文件夹中。
  2. 在终端中,运行mysql -u root -p <./sys_57.sql(或sys_56.sql,具体取决于您的版本)

再次享受mysql_upgrade的工作。我想这可能是升级脚本的混乱。


是的,这是升级数据库的问题。不幸的是,我无法再测试您的解决方案以查看其是否有效。
奥米德

我在报告“该MySQL安装已升级到5.7.22,如果仍然需要运行mysql_upgrade的情况下使用--force”的mysql 5.7.22安装上尝试了此解决方案,它的工作原理很不错
henrik

2

我也有这个问题。每次我开始安装和安装时,该过程都会在数据库更新之后或期间挂起。这里的其他解决方案均无效。

最后我清除了

sudo apt purge mysql-server mysql-server-5.7

并按照mysql的说明从此处手动安装

然后,我用旧数据覆盖了数据目录

sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data

最后添加了像这样的系统服务

/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=syslog.target
After=network.target

[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/usr

[Install]
WantedBy=multi-user.target

然后跑

# systemctl daemon-reload
# systemctl enable mysql
# systemctl start mysql

然后一切似乎都像以前一样工作,并且mysql没有破坏系统更新

不利的一面是,将来我将需要进行手动更新。


1

如果你的root @ localhost账号没有密码,那么在安装后过程中的错误作为陈述这里 (见特别是螺纹的最后一个注释)

  • 清除中的所有TMP*文件/var/lib/mysql-files
  • 编辑文件/var/lib/dpkg/info/mysql-server-5.7.postinst并在第370行中注释(使用#):

    echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';" >> "$initfile"

  • 再次运行 sudo dpkg --configure -a


哦,亲爱的我!<3您挽救了我的性命:p后代注意:您可能希望使用apt-mark hold mysql-server-5.7
Gab –保留在Monica遗下的
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.