Here’s a quick little shell script that will drop all the tables in a MySQL database without dropping the database.
#!/bin/bash
#======================================================================
# validate command line argument count
#======================================================================
if [ $# -ne 3 ]
then
echo "This program will drop all tables in the specified MySQL database"
echo "Usage: "
echo " $0 {user} {password} {database}"
exit 1
fi
#======================================================================
# Get command line arguments
#======================================================================
user="$1"
password="$2"
database="$3"
#======================================================================
# Get the list of tables to delete
#======================================================================
tableList=$(mysql -u $user -p$password $database -e 'show tables' | awk '{ print $1}' | grep -v '^Tables' )
#======================================================================
# Iterate over and drop each table
#======================================================================
for table in $tableList
do
echo "Dropping $table table from $database database..."
mysql -u $user -p$password $MDB -e "set FOREIGN_KEY_CHECKS = 0; drop table $table"
done