databases() { echo "SHOW DATABASES;" | mysql | egrep -v '^(Database|information_schema)$' } database?() { [ -n "${1}" ] || return 1 databases | egrep -q "^${1}$" || return 2 return 0 } tables() { database? "${1}" || return 1 echo "SHOW TABLES;" | mysql "${1}" | egrep -v '^Tables_in_.*$' } table?() { database? "${1}" || return 1 [ -n "${2}" ] || return 2 tables "${1}" | egrep -q "^${2}$" || return 3 return 0 } repair_table() { table? "${1}" "${2}" || return 1 echo "REPAIR TABLE \`${2}\`;" | mysql "${1}" | egrep -v "^Table" } optimize_table() { table? "${1}" "${2}" || return 1 echo "OPTIMIZE TABLE \`${2}\`;" | mysql "${1}" | egrep -v "^Table" } optimize_database() { database? "${1}" || return 1 tables "${1}" | while read table do optimize_table "${1}" "${table}" done } optimize_all() { databases | while read database do optimize_database "${database}" done } dump() { table? "${1}" "${2}" || return 1 mysqldump "${1}" "${2}" }