Skip to content

Instantly share code, notes, and snippets.

@dominicfallows
Last active March 28, 2022 00:56
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dominicfallows/c1f7bd150f946b7d1dfd1a720a13f8fc to your computer and use it in GitHub Desktop.
Save dominicfallows/c1f7bd150f946b7d1dfd1a720a13f8fc to your computer and use it in GitHub Desktop.
Bash shell script to backup MAMP databases to individual files (for MAMP with MySQL 5.6+)
#!/bin/bash
#
# Description: Shell script to backup all MAMP MySQL databases into compressed files
# Script: mamp-db-backup.sh
# Version: 1.0.1
# Script Website: https://gist.github.com/dominicfallows/c1f7bd150f946b7d1dfd1a720a13f8fc
# Author: Dominic Fallows
# Author Website: https://gist.github.com/dominicfallows
#
# Requirements:
# - MAMP with MySQL 5.6+
#
# Setup:
# 1) Save your MAMP MySQL root auth details into a config file
# This avoids the "Warning: Using a password on the command line interface can be insecure" error
#
# 2) In terminal, run the following command:
#
# /Applications/MAMP/Library/bin/mysql_config_editor set --login-path=mamp --host=localhost --user=root --password
#
# You will then be asked for your MAMP MySQL password (for root) - default is: root
#
# 3) Make this file executable by running, in terminal, the following command:
#
# chmod +x mamp-db-backup.sh
#
# 4) You can then run this script, in terminal or triggered by an application/scheduler,
# from the folder where the file is stored, and you want the databases:
#
# ./mamp-db-backup.sh
#
# ---------------------------------------------------------------------------------------------------
# CHANGELOG:
#
# Version: 1.0.1
# - Added a --single-transaction flag to prevent errors like:
# "mysqldump: Got error: 1044: Access denied for user 'root'@'localhost' to database 'information_schema' when using LOCK TABLES"
#
# Version: 1.0.0
# Launch
if test -f /Applications/MAMP/tmp/mysql/mysql.pid; then
DB_COUNTER=0
SECONDS=0
for db in $(/Applications/MAMP/Library/bin/mysql --login-path=mamp -e 'show databases' -s --skip-column-names);
do
DB_COUNTER=$[$DB_COUNTER +1]
/Applications/MAMP/Library/bin/mysqldump --login-path=mamp --single-transaction "$db" | gzip > "$db.sql.gz"
done;
duration=$SECONDS
echo "$(date) Backed up $DB_COUNTER MAMP MySQL Databases in $duration seconds"
fi;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment