如何卸载MySQL?

我使用sudo apt-get安装了MySQL。现在我需要从系统中删除它。
我该如何做呢?
9个回答

我假设你不再需要MySQL,并且已经备份了重要的数据库。我建议你备份重要的MySQL数据库。
注意:你所有的MySQL数据将会丢失。
首先确保MySQL服务已停止。
sudo systemctl stop mysql

彻底删除与 MySQL 相关的所有包。

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

删除MySQL配置和数据。如果您在MySQL配置中更改了数据库位置,则需要根据其替换/var/lib/mysql
sudo rm -rf /etc/mysql /var/lib/mysql

(可选)删除不必要的软件包。
sudo apt autoremove

(可选)清除apt缓存。

sudo apt autoclean

1我猜这个方法不起作用。在我执行这些步骤之后,我尝试了 sudo apt-get install mysql-client-core-5.5。但是显示的结果是:mysql-client-core-5.5 已经是最新版本。 0 个升级的,0 个新安装的,0 个需要移除的,还有 97 个没有被升级的。 这是否意味着 MySQL 仍然存在于我的电脑上? - batman
1如果我尝试执行sudo dpkg --purge mysql-server mysql-client mysql-common命令,我会得到以下警告:dpkg: 警告: 没有安装与 mysql-server 匹配的软件包 dpkg: 警告: 没有安装与 mysql-client 匹配的软件包 dpkg: 警告: 没有安装与 mysql-common 匹配的软件包 。我现在有点困惑了。是不是已经删除了 mysql - batman
为什么这也会移除xbmcxbmc-bin?在使用phpmyadmin浏览时,mysql中没有xbmc表。 - Redsandro
5这对我来说还不够,还需要做一些其他的事情:http://stackoverflow.com/a/16178696/447661 - Mihai Rotaru
我尝试了这里列出的所有命令,然后如果我在终端中输入'mysql'并按两次tab键,仍然会看到一些关于mysql的选项出现,这意味着什么?> mysql mysqld mysql_upgrade mysqlcheck mysql_install_db - GoProCameraByGoPro
配置文件仍然保留在/etc/mysql目录中。这些文件应该手动删除吗? - s.brody
4这对我来说也不够 - 对我来说,这里的答案反而有效:http://stackoverflow.com/a/16178696/368896 - Dan Nissenbaum
你可能想要添加:rm -rf /var/log/mysql - jlh
为了确保您已删除所有内容,请运行以下命令:sudo apt-get purge mysql* mariadb* - Dejv
对于那些这个方法不起作用的人,可以尝试逐个移除它们,按照不同的顺序进行尝试。 - phil294
使用sudo rm -rf /var/lib/mysql命令将会删除默认位置下的数据库。如果您认为以后可能需要这些数据,请先备份! - Augusto
我尝试过这个方法,结果所有东西和MySQL一起被删除了。我不建议使用这个解决方案。 - Mayur Satav
使用sudo apt autoremove时要小心。它会从我的服务器上删除很多重要的东西! - Soheil Rahsaz

所有上述解决方案都是正确的,但我建议尝试以下操作:
sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
这将卸载所有与mysql相关的软件包。

13这是最简单的方法来摆脱与mysql相关的一切。尽管通配符在这里将匹配几乎任何包含'mysq'的名称的软件包,所以你可能想要指定sudo apt-get remove --purge -s 'mysql*'以更加具体。 - geerlingguy
同意使用更具体的正则表达式。我最终使用了'^mysql-'的正则表达式。最初,我打算运行mysql,但发现它捕获了大量不相关的东西...例如:注意,选择'regex '^mysql*'的'mysql-testsuite' 注意,选择'regex '^mysql*'的'mysql-server' 注意,选择'regex '^mysql*'的'mysql-server-core' 注意,选择'regex '^mysql*'的'mysqmail' 注意,选择'regex '^mysql*'的'mysqmail-pure-ftpd-logger'。 - MaasSql
我尝试了这里列出的所有命令,然后如果我在终端中输入'mysql'并按两次tab键,仍然会看到一些关于mysql的选项出现,这意味着什么?> mysql mysqld mysql_upgrade mysqlcheck mysql_install_db - GoProCameraByGoPro
只有当我使用sudo apt-get -f autoremove时,这才对我起作用。 - Simon D
这给了我一些错误,例如 E: 无法定位软件包 mysql。我的安装似乎有些问题,而且我甚至无法重新安装它,这让我感到有点害怕。 - phil294
这很危险。使用 * 将自担风险。bash 将展开所有匹配的案例并删除它们,即使它们与 mysql 无关。 - user383919
它没有删除我在Ubuntu 16.04.2 LTS上的/etc/mysql目录中的文件。 - simpleuser
请不要使用这个!它从我的系统中删除了Atom、Git、Perl和许多其他重要的软件包。不知道为什么。 - Vignesh T.V.
sudo apt-get autoremove非常具有误导性...它还会卸载一些已安装的应用程序。 - Shift 'n Tab
@Roel 只有在你的应用程序依赖于你删除的任何已提及的软件包时,才会发生这种情况。 - KK Patel

这将从Ubuntu 15.04中移除MySQL 5.6。
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql

1手动删除目录对我来说似乎是必要的(所以+1),也许是因为我的目录是符号链接? - Jonathan
1我觉得你的回答最简洁,所以我想在这里评论一下。我之前在mariadb上做了类似的事情,但是我注意到我有一个悬空的系统服务。我不得不使用以下方法将其删除:http://superuser.com/a/936976/260852 - Mario Olivio Flores
1谢谢,这对于在Ubuntu 16.04上的MySQL 5.7也适用。 - tated

首先,您需要停止MySQL服务器的服务。
sudo service mysql stop

然后您可以使用清除命令来卸载。
sudo apt-get purge mysql-server mysql-client

注意:以上是基于您的套餐清单。我已经安装了服务器和客户端。这将方便您使用。

停止MySQL服务对我来说非常关键。我一直在运行它,但是不断出现错误:dpkg: unrecoverable fatal error, aborting: fork failed: Cannot allocate memory E: Sub-process /usr/bin/dpkg returned an error code (2)。停止MySQL,然后运行 sudo dpkg --configure -a 接着执行 sudo apt-get remove --purge mysql* 对我起了作用。 - tww0003

完全卸载mysql:

sudo -i
service mysql stop
killall -KILL mysql mysqld_safe mysqld
apt-get --yes purge mysql*
apt-get --yes autoremove --purge
apt-get autoclean
deluser --remove-home mysql
delgroup mysql
rm -rf /etc/apparmor.d/abstractions/mysql /etc/apparmor.d/cache/usr.sbin.mysqld /etc/mysql /var/lib/mysql /var/log/mysql* /var/log/upstart/mysql.log* /var/run/mysqld ~/.mysql_history
updatedb

根据this的回答和其他许多人的意见...

我不常用Ubuntu,但我认为你应该尝试我所做的。
首先,在命令行中输入以下内容:sudo apt-get remove --purge mysql-server mysql-client mysql-common
然后继续输入以下内容:sudo apt-get autoremove
最后输入以下内容:sudo apt-get autoclean
我发现它已经被移除了。

我忘记了MySQL的root密码,需要重置。 我尝试了this,但它没有起作用,因为它一直显示“无法写入日志”或类似的错误信息。
我的解决办法是完全从Ubuntu 13.10中移除MySQL,并进行全新安装。
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo rm -rf /var/lib/mysql

我不得不运行最后一个命令,因为Ubuntu有时会保留一些库,即使你尝试清除它们。

现在,我使用这个命令来安装MySQL服务器和客户端:

sudo apt-get install mysql-client mysql-server

试一下这个,它会彻底清除你系统中的每一个MySQL文件。
sudo service mysql stop  #or mysqld
sudo killall -9 mysql
sudo killall -9 mysqld
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo deluser -f mysql
sudo rm -rf /var/lib/mysql
sudo apt-get purge mysql-server-core-5.7
sudo apt-get purge mysql-client-core-5.7
sudo rm -rf /var/log/mysql
sudo rm -rf /etc/mysql

当我尝试使用sudo apt-get purge mysql*时,它没有起作用。
使用以下命令彻底清除了mysql5
sudo apt-get purge mysql-*

然后进行清理:

sudo apt-get autoremove
sudo apt-get autoclean