/ debugging-tools

mysql-tail

mysql-tail a script for temporarily enabling mysql's general_log and then tailing the output.

usage: mysql-tail [connect args]

$ mysql-tail -uroot -p

The script will prompt you for a password if required both on startup and shutdown, both when it connects to enabled the general query log and when it disables the log. I typically use this in development with mysql restricted to connections from localhost and without a password.

usage without a password and a default user from ~/.my.cnf:

$ mysql-tail

installation:
wget https://safetytrick.com/snippets/mysql-tail && chmod +x mysql-tail

script:

#!/bin/bash

export allargs="$@"

mysql_genlog_off () {
  mysql $allargs -e "set global general_log = 0;"	
  exit $?
}

if [ "OFF" = $(mysqladmin variables | grep -w general_log | awk '{print $(NF-1)}') ]
then
  trap "mysql_genlog_off" SIGINT
  mysql $@ -e "set global general_log = 1;"
fi 

LOGFILE=$(mysqladmin variables | grep general_log_file | awk '{print $(NF-1)}')

if [ ! -f $LOGFILE ]
  then
  echo "general_log_file does not exist: $LOGFILE"
  exit 1
fi

echo "reading from: $LOGFILE"
tail -F $LOGFILE