79

The answers to related questions forget to:

  • remove the MySQL databases
  • remove the mysql user
  • remove the logs in /var/log

How do I uninstall MySQL completely?

4 Answers 4

171

Building off of another answer, open a terminal (press Ctrl+Alt+T) and run the following:

sudo -i
service mysql stop
killall -KILL mysql mysqld_safe mysqld
apt-get --yes purge mysql-server mysql-client
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
updatedb
exit

If you want to delete the log of what you did while using the mysql client:

rm ~/.mysql_history

If you want to delete the logs of what all users on the system did while using the mysql client (the other users might be unhappy with this):

awk -F : '{ print($6 "/.mysql_history"); }' /etc/passwd | xargs -r -d '\n' -- sudo rm -f --

or for all logs including those outside of existing user home directories:

sudo find / -name .mysql_history -delete
5
  • 26
    You may also need dpkg -l | grep mysql to list any installed mysql packages, then e.g. sudo apt-get purge mysql-common for each entry
    – xxjjnn
    Jul 13, 2016 at 8:33
  • 11
    If you re-install mysql afterwards, you may have to run mkdir /etc/apparmor.d/abstractions/mysql and mkdir /etc/mysql/conf.d/ again.
    – kiltek
    Mar 6, 2017 at 14:17
  • What about /var/lib/mysql/mysql-files and /var/lib/mysql-keyring ?
    – Dom
    Jul 15, 2020 at 12:36
  • This is very, very risky stuff! Please do only if you're absolutely certain, that you don't need any data from the your mysql anymore. (check additionally ls -la /var/lib/mysql)
    – telenaut
    Oct 1, 2021 at 21:07
  • This completely botched my system...
    – Hakaishin
    Oct 13, 2021 at 13:20
34

I found some help, but it did not remove everything. I added an asterisk before and after mysql like this:

sudo apt-get remove --purge *mysql\*
sudo apt-get autoremove
sudo apt-get autoclean
5
  • 2
    Are you trying to answer the question ? Dec 31, 2016 at 8:00
  • 1
    I would also sudo rm -rf /var/lib/mysql If I didn't do that, I ran into trouble when re-provisioning the server (using geerlingguy's ansible-role-mysql).
    – TryHarder
    Oct 20, 2017 at 6:19
  • It also removes php mysqli extension Mar 29, 2019 at 7:40
  • 3
    CAUTION: this may remove a bunch of other packages that any link to MySQL, read carefully what will be removed. Apr 5, 2019 at 15:05
  • This does not remove any of the three things the OP asked how to remove in the question. It does not remove the databases, it doesn't remove the logs, and it doesn't remove the mysql user. May 4 at 4:03
0

Another way, that worked for me, was to use Synamptic Package Manager. On the left hand pane,where it says: All, Installed, etc. there is an entry for Not Installed (residual config.) (or similar wording). Under there I found options to clear all MySQL install files. This worked for MySQL 5.7.

1
  • This is identical to apt purge <package> and it does not remove any of the three things the OP asked how to remove. May 4 at 4:02
0

I used a collab of 2 answers, first I ran this

  • sudo -i

  • service mysql stop

  • killall -KILL mysql mysqld_safe mysqld apt-get --yes purge mysql-server mysql-client

  • 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

  • updatedb

  • exit

Then checked, but still had an error, so as backup, I ran this within the terminal.

  • sudo apt-get remove --purge *mysql*
  • sudo apt-get autoremove
  • sudo apt-get autoclean

Worked perfectly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.