如何在Ubuntu 16.04上将MySQL 5.7降级到5.6?

我发现MySQL 5.7占用大量内存,想要回滚到MySQL 5.6。
然而,每次我尝试卸载5.7并安装5.6时,都会导致MySQL服务无法启动。另外,我需要确保保留所有的数据库。
有人能告诉我如何简单地一步一步地将MySQL从5.7回滚到5.6吗?
**UPDATE**
$ dpkg -l | grep mysql    

rc  akonadi-backend-mysql                                1.13.0-2ubuntu4                                      all          MySQL storage backend for Akonadi  
ii  dbconfig-mysql                                       2.0.4ubuntu1                                         all          dbconfig-common MySQL/MariaDB support  
ii  libdbd-mysql-perl                                    4.033-1build2                                        amd64        Perl5 database interface to the MySQL database  
rc  libmysqlclient18:amd64                               5.6.30-0ubuntu0.15.10.1                              amd64        MySQL database client library  
rc  libmysqlclient18:i386                                5.6.30-0ubuntu0.15.10.1                              i386         MySQL database client library  
ii  libmysqlclient20:amd64                               5.7.12-0ubuntu1.1                                    amd64        MySQL database client library  
ii  mysql-client-5.7                                     5.7.12-0ubuntu1.1                                    amd64        MySQL database client binaries  
ii  mysql-client-core-5.7                                5.7.12-0ubuntu1.1                                    amd64        MySQL database core client binaries  
ii  mysql-common                                         5.7.12-0ubuntu1.1                                    all          MySQL database common files, e.g. /etc/mysql/my.cnf  
iU  mysql-server                                         5.7.12-0ubuntu1.1                                    all          MySQL database server (metapackage depending on the latest version)  
rc  mysql-server-5.5                                     5.5.43-0ubuntu0.14.10.1                              amd64        MySQL database server binaries and system database setup  
rc  mysql-server-5.6                                     5.6.16-1~exp1                                        amd64        MySQL database server binaries and system database setup  
iF  mysql-server-5.7                                     5.7.12-0ubuntu1.1                                    amd64        MySQL database server binaries and system database setup  
ii  mysql-server-core-5.7                                5.7.12-0ubuntu1.1                                    amd64        MySQL database server binaries  
ii  php-mysql                                            1:7.0+42+deb.sury.org~xenial+2                       all          MySQL module for PHP [default]  
ii  php5.6-mysql                                         5.6.23-1+deb.sury.org~xenial+2                       amd64        MySQL module for PHP  
ii  php7.0-mysql                                         7.0.8-2+deb.sury.org~xenial+1                        amd64        MySQL module for PHP  

Ubuntu 16.04官方仓库只提供5.7版本,所以首先您需要找到一个提供5.6版本的仓库。也许可以尝试官方MySQL仓库 - fkraiem
我已经添加了可靠的仓库以访问MySQL 5.6。 - dibs
你不应该这样做,尤其是因为看起来有5.6版本的Xenial软件包。 - fkraiem
例如,用于管理服务的系统已经发生了变化(Trusty使用upstart,Xenial使用systemd),因此并不奇怪,在为Trusty(使用upstart)制作的软件包中的某个服务在Xenial(使用systemd)中无法启动。 - fkraiem
啊哇。也许这就是为什么无论我尝试了什么都似乎没有起作用的原因。 - dibs
另外,请包含dpkg -l | grep mysql的输出,这样我们就可以看到您安装的MySQL软件包及其版本号。 - fkraiem
你可以使用upstart启动16.04版本。 - Rinzwind
2个回答

首先,对所有数据库(包括information_schema)进行mysqldump。然后停止mysql,这将删除与mysql相关的所有内容。
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.7 mysql-client-core-5.7

# Backup 5.6 config and data without deleting
sudo mv /etc/mysql /etc/mysql-5.6-backup
sudo mv /var/lib/mysql /var/lib/mysql-5.6-backup
sudo apt-get autoremove
sudo apt-get autoclean

然后

sudo apt-get install mysql-client-5.6
sudo apt-get update

警告:

  • Ubuntu 在 16.04 版本中切换到 systemd。使用 mysql 5.6 时,您可能还需要使用 upstart 启动 16.04。

1我非常确定,$ sudo rm -rf /var/lib/mysql 这个命令将会彻底删除我的所有数据库。 - dibs
它会工作,但你无论如何都不能保留 /var/lib/mysql/。你需要一个数据库转储文件,这样你才能重新加载它。否则,你将从5.7中获取一些在5.6中无效的设置。 - Rinzwind
1我看到另一个错误:在删除mysql之前需要停止它。还有一个警告:我们在5.6和5.7之间切换到了systemd。虽然不是致命问题,但值得一提。 - Rinzwind
@Rinzwind 这个实际上意味着什么,关于systemd的改变?还好知道我必须倾倒数据库。我会确保首先完成这个任务。 - dibs
upstart是Ubuntu自己的系统启动和服务管理系统。systemd是相同功能但更广泛接受的系统,所以我们切换到了它。意味着16.04版本的软件将提供systemd服务,而15.10及更低版本将提供upstart服务。两者不可混用。 - Rinzwind
3mysql-client-5.6在apt-get中不再默认提供。请参考http://askubuntu.com/questions/762384/install-mysql-5-6-on-ubuntu-16-04了解如何安装它。 - Tony
无法清除mysql 5.7,因为存在未满足的依赖关系,而且无论如何也无法安装5.6版本。将查找@Tony提供的链接。 - Shautieh
包mysql-client-5.6不可用,但被另一个包所引用。 - Kiran Reddy

我在Ubuntu 18.04中添加了Ubuntu 14.04的软件源。
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'

我可以安装:
sudo apt install mysql-client-5.6

2这是一个非常糟糕的主意。请参考https://askubuntu.com/questions/499800/can-i-mix-sources-from-different-ubuntu-versions。 - fosslinux
可以这样做,但不要更新,并在安装后添加“-r”以删除:“sudo add-apt-repository -r 'deb http://archive.ubuntu.com/ubuntu trusty universe'”。虽然将其留在您的存储库中是一个坏主意,但如果一旦安装了5.6就将其删除,我认为这并不像上面的评论所说的那么糟糕。这里的相同答案有60个赞成票,他进行了apt-get更新,这可能会导致更多问题:https://askubuntu.com/questions/762384/install-mysql-5-6-on-ubuntu-16-04#765458 - MagicLAMP