HowTo: Reinstall MySQL v5.x On Linux

M

y MySQL database installation has been corrupted. I would like to delete old mysql server. How do I reinstall MySQL database server version 5.x on Linux or Unix-like oses? A software upgrade broke my system. How can I uninstall and re-install mysql again to get fresh full mysql again?

 

You can easily reinstall mysql server on Linux or Unix-like operating system. The steps are as follows:

Backup database and all config files

Erase/uninstall existing mysql server/client.

Delete all files data directory.

Delete all mysql config files.

Completely reinstall mysql server.

Restore config files and database.

Step #1: Backup backup backup

Make a backup – it cannot be stressed enough how important it is to make a backup of your system before you do this. You need to backup

MySQL database data directory (e.g. /var/lib/mysql/.

MySQL databases using mysqldump command.

Mysql config files /etc/my.cnf, /etc/logrotate.d/mysqld, and other files.

Mysql log files (e.g. /var/log/mysqld.log.

In this example, I am backing up all important files on CentOS/RHEL 6.x based server:

# mkdir /root/mysql-files/

# tar zcvf /root/mysql-files/mysql.config-files.dd-mm-yyyy.tar.gz /etc/logrotate.d/mysqld /var/log/mysqld.log /etc/my.cnf /root/my.cnf /var/lib/mysql/

 

In this example, I am backing up all databases using a shell script called mysql-backup.sh:

#!/bin/sh

# mysql-backup.sh: Dump MySQL databases.

# Note: Test only on RHEL/CentOS/Debian/Ubuntu Linux.

# Author: nixCraft <www.cyberciti.biz> Under GPL v2.0+

# —————————————————–

NOW=$(date + %d-%m-%Y )

BAK= /root/mysql-files/$NOW

 

############

SET ME FIRST ##

############

MUSER= root

MPASS= YOUR-ROOT-PASSWORD-HERE

MHOST= localhost

 

MYSQL= $(which mysql)

MYSQLDUMP= $(which mysqldump)

GZIP= $(which gzip)

 

if [ ! -d $BAK ]; then

mkdir -p $BAK

else

:

fi

 

DBS= $($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse  show databases )

echo -n  Dumping…${THISDB}…

for db in $DBS

do

echo -n  $db

FILE=$BAK/mysql-$db.$NOW-$(date + %T ).gz

$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE

done

echo -n   …Done @ ${BAK} directory.

echo

Run it as follows

$ ./mysql-backup.sh

 

Sample outputs:

Dumping……blog cyberciti mysql…Done @ /root/mysql-files/08-12-2013 directory.

Verify backups:

# ls -l /root/mysql-files/08-12-2013

 

Sample outputs:

-rw-r–r–. 1 root root  1836687 Dec  8 04:00 mysql-blog.08-12-2013-04:00:18.gz

-rw-r–r–. 1 root root  7152648 Dec  8 04:00 mysql-cyberciti.08-12-2013-04:00:25.gz

-rw-r–r–. 1 root root   135530 Dec  8 04:00 mysql-mysql.08-12-2013-04:00:41.gz

I suggest that you read our previous guide “HowTo: Migrate / Move MySQL Database And Users To New Server” for more information.

Step #2: Erase/Delete MySQL server

If you are using Debian/Ubuntu Linux type the following apt-get command:

$ sudo apt-get purge mysql-server mysql-common mysql-client

 

Sample outputs:

Reading package lists… Done

Building dependency tree

Reading state information… Done

Package mysql-client is not installed, so not removed

The following packages were automatically installed and are no longer required:

libnet-daemon-perl libdbi-perl libterm-readkey-perl mysql-server-core-5.5 mysql-client-core-5.5

libplrpc-perl

Use  apt-get autoremove  to remove them.

The following packages will be REMOVED:

libdbd-mysql-perl* libmysqlclient18* mysql-client-5.5* mysql-common* mysql-server*

mysql-server-5.5*

0 upgraded, 0 newly installed, 6 to remove and 2 not upgraded.

After this operation, 67.3 MB disk space will be freed.

Do you want to continue [Y/n]? y

(Reading database … 82128 files and directories currently installed.)

Removing mysql-server …

Removing mysql-server-5.5 …

mysql stop/waiting

Purging configuration files for mysql-server-5.5 …

Removing mysql-client-5.5 …

Removing libdbd-mysql-perl …

Removing libmysqlclient18 …

Purging configuration files for libmysqlclient18 …

Removing mysql-common …

Purging configuration files for mysql-common …

dpkg: warning: while removing mysql-common, directory  /etc/mysql  not empty so not removed.

Processing triggers for man-db …

Processing triggers for ureadahead …

Processing triggers for libc-bin …

ldconfig deferred processing now taking place

Delete config/database/log files using rm command:

$ sudo rm -rvfi /var/lib/mysql /etc/mysql/ /var/log/mysql*

If you are using CentOS/RHEL/Fedora/Red Hat/Scientific Linux type the following yum command to uninstall mysql:

# yum remove mysql mysql-server

 

Sample outputs:

Loaded plugins: product-id, rhnplugin, security, subscription-manager

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

This system is receiving updates from RHN Classic or RHN Satellite.

Setting up Remove Process

Resolving Dependencies

–> Running transaction check

—> Package mysql.x86_64 0:5.1.71-1.el6 will be erased

—> Package mysql-server.x86_64 0:5.1.71-1.el6 will be erased

–> Finished Dependency Resolution

 

Dependencies Resolved

 

======================================================================================================

Package                Arch             Version                Repository                       Size

======================================================================================================

Removing:

mysql                  x86_64           5.1.71-1.el6           @rhel-x86_64-server-6           2.4 M

mysql-server           x86_64           5.1.71-1.el6           @rhel-x86_64-server-6            25 M

 

Transaction Summary

======================================================================================================

Remove        2 Package(s)

 

Installed size: 27 M

Is this ok [y/N]: y

Downloading Packages:

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Erasing    : mysql-server-5.1.71-1.el6.x86_64                                                   1/2

Erasing    : mysql-5.1.71-1.el6.x86_64                                                          2/2

Verifying  : mysql-server-5.1.71-1.el6.x86_64                                                   1/2

Verifying  : mysql-5.1.71-1.el6.x86_64                                                          2/2

 

Removed:

mysql.x86_64 0:5.1.71-1.el6                    mysql-server.x86_64 0:5.1.71-1.el6

 

Complete!

Delete config/database/log files using rm command:

[code]# rm -rfvi /etc/my.cnf /var/lib/mysql/ /var/log/mysqld.log[/code]

Step #3: Reinstall mysql database server

If you are using CentOS/RHEL/Fedora/Red Hat/Scientific Linux type the following yum command to install mysql:

# yum install mysql mysql-server

If you are using Debian/Ubuntu Linux type the following apt-get command:

$ sudo apt-get install mysql-client mysql-server mysql-common

Step #4: Restore config files and databases

Restore all config files and databases as demonstrated in step #1. See how to restore a backup of a mysql database:

$ gunzip mysql-blog.08-12-2013-04:00:18.gz

$ mysql -u root -p mysql -e  CREATE DATABASE blog;

$ mysql -u root -p blog < mysql-blog.08-12-2013-04\:00\:18

 

Restore mysql config file as follows:

# tar xvf /root/mysql-files/mysql.config-files.dd-mm-yyyy.tar.gz -C /root/backups/

# cp /root/backups/etc/my.cnf /etc

# service mysqld restart

 

This entry is 5 of 5 in the CentOS Linux MySQL Server Tutorial series. Keep reading the rest of the series:

CentOS install Mysql database server

CentOS install MySQL client only

MySQL Create a user accounts

MySQL Create a database & tables and data

Reinstall MySQL On Linux

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *