76

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?

161

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
  • 24
    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 '16 at 8:33
  • 10
    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 '17 at 14:17
  • What about /var/lib/mysql/mysql-files and /var/lib/mysql-keyring ?
    – Dom
    Jul 15 '20 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 at 21:07
  • This completely botched my system...
    – Hakaishin
    2 days ago
33

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
4
  • 2
    Are you trying to answer the question ? Dec 31 '16 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 '17 at 6:19
  • It also removes php mysqli extension Mar 29 '19 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 '19 at 15:05
1

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.

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.