Skip to content
Snippets Groups Projects
mysql.helper 3.24 KiB
Newer Older
  • Learn to ignore specific revisions
  • HELPERS="$HELPERS mysql:mysql_database_backup"
    
    elijah's avatar
    elijah committed
    
    do_mysql_user() {
      inputBox "mysql action wizard" "specify a system user:"
    
    elijah's avatar
    elijah committed
      [ $? = 1 ] && return
    
    elijah's avatar
    elijah committed
      do_mysql_final "user = $REPLY"
    }
    
    do_mysql_password() {
      inputBox "mysql action wizard" "specify a mysql user:"
    
    elijah's avatar
    elijah committed
      [ $? = 1 ] && return
    
    elijah's avatar
    elijah committed
      user=$REPLY
      inputBox "mysql action wizard" "specify the mysql user's password:"
    
    elijah's avatar
    elijah committed
      [ $? = 1 ] && return
    
    elijah's avatar
    elijah committed
      password=$REPLY
      do_mysql_final "dbusername = $user\ndbpassword = $password"
    }
    
    do_mysql_debian() {
      _DISABLE_HOTCOPY=yes
      do_mysql_final "configfile = /etc/mysql/debian.cnf"
    }
    
    do_mysql_user() {
      inputBox "mysql action wizard" "what system user does mysql backup use?"
    
    elijah's avatar
    elijah committed
      [ $? = 1 ] && return
    
    elijah's avatar
    elijah committed
      do_mysql_final "user = $REPLY"
    }
    
    do_mysql_final() {
       if [ -z "$_DISABLE_HOTCOPY" ]; then
          checkBox "mysql action wizard" "check options" \
    
             "sqldump" "create a backup using mysqldump (more compat)." no \
             "hotcopy" "create a backup using mysqlhotcopy (faster)." yes \
             "compress" "compress the sql output files" yes
    
    elijah's avatar
    elijah committed
          status=$?
    
          sqldump="sqldump = no"
          hotcopy="hotcopy = no"
    
    elijah's avatar
    elijah committed
       else
          checkBox "mysql action wizard" "check options" \
    
             "compress" "compress the sql output files" yes
    
    elijah's avatar
    elijah committed
          status=$?
    
          sqldump="sqldump = yes"
          hotcopy="hotcopy = no"
    
    elijah's avatar
    elijah committed
       fi
    
       [ $status = 1 ] && return;    
       result="$REPLY"
    
    elijah's avatar
    elijah committed
       for opt in $result; do
          case $opt in
    
            '"sqldump"') sqldump="sqldump = yes";;
            '"hotcopy"') hotcopy="hotcopy = yes";;
            '"compress"') compress="compress = yes";;
    
    elijah's avatar
    elijah committed
          esac
       done
       get_next_filename $configdirectory/20.mysql
       echo -e $@ > $next_filename
       cat >> $next_filename <<EOF
    $sqldump
    $hotcopy
    $compress
    # databases   = all
    # backupdir   = /var/backups/mysql
    # dbhost      = localhost
    EOF
    
    elijah's avatar
    elijah committed
    }
    
    mysql_wizard() {
       while true; do
          _DISABLE_HOTCOPY=
          menuBoxHelpFile "mysql action wizard" "choose a mysql authentication method:" \
            user "change to a linux user first." \
            password "manually specify mysql user and password." \
            debian "use default mysql user debian-sys-maint." 
          status=$?
          if [ $status = 2 ]; then
    	       # show help.
              helptmp="/tmp/backupninja.help.$$"
              cat > $helptmp <<EOF
    To connect to mysql, backupninja must authenticate.
    There are three possible authentication methods:
    
    USER
    With this method, you specify a system user. Backupninja  will
    then become this user before running mysqldump or mysqlhotcopy.
    The result is that ~/.my.cnf is used for authentication.
    
    PASSWORD
    With this method, you manually specify a mysql user and
    password in the backup action configuration.
    
    DEBIAN
    With this method, we use the debian-sys-maint user which is
    already defined in /etc/mysql/debian.cnf. If you are running
    debian, this is recommended, because no further configuration
    is needed. The drawback is that this is incompatible with 
    mysqlhotcopy: you must use mysqldump.
    EOF
              dialog --textbox $helptmp 0 0
              rm $helptmp
          fi
    
          [ $status = 1 ] && return;
          result="$REPLY"
          case "$result" in
             "user") do_mysql_user;return;;
             "password") do_mysql_password;return;;
             "debian") do_mysql_debian;return;;
          esac
       done
    }