昨晚我尝试升级我的 Ubuntu 操作系统,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
我无法以常规方式取消安装过程,只能终止它。因此,它可能会导致一些问题,并且对于(将来的)其他每个安装,它都会尝试再次执行此操作。
如何阻止这次升级或者解决它?
答案1
这个解决方案解决了我的问题:
使用以下权限备份数据库文件:
sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
删除mysql文件:
sudo rm -rv /etc/mysql
通过运行以下命令彻底删除 MySQL:
sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
用于突触被推荐。
创建以下文件夹:
sudo mkdir -p /etc/mysql/conf.d
mysql 安装没有自动执行此操作,我不知道为什么。
再次安装 MySQL
sudo apt install mysql-server
我过去
sudo apt install lamp-server^
常常安装其他 PHP 开发依赖项。停止 MySQL:
sudo service mysql stop
恢复数据库和文件:
sudo cp -a /your/backup/directory/mysql /var/lib sudo cp /your/backup/directory/my.cnf /etc/mysql
重新启动 MySQL:
sudo service mysql start
答案2
一个简单的解决方案是sudo killall mysqld
在 apt-get 操作运行时。
此后,apt 操作一直运行,没有任何错误(!)
答案3
我设法解决了这个问题,而不必清除所有内容。问题似乎是 sys 架构数据库从未创建过,所以解决方案如下:
- 克隆https://github.com/mysql/mysql-sys然后将 cd 进入克隆的文件夹。
- 在终端中,运行 mysql -u root -p < ./sys_57.sql(或 sys_56.sql,取决于您的版本)
再次享受 mysql_upgrade 的运行吧。我猜这可能是升级脚本出了问题。
答案4
我也遇到过这个问题。每次我启动 apt get 并安装时,该过程都会在数据库更新后或更新期间挂起。这里的其他解决方案都不起作用。
最后我清除了
sudo apt purge mysql-server mysql-server-5.7
并按照 mysql 的说明进行手动安装这里
然后我用旧数据覆盖了数据目录
sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data
最后添加了一个像这样的 systemd 服务
/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 也没有破坏系统更新
当然,缺点是我以后需要手动更新。