aboutsummaryrefslogtreecommitdiff
path: root/handlers/mysql.helper
blob: 765f22889350b88e133605aefa1125e1ce7ad37d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
do_mysql_user() {
  inputBox "mysql action wizard" "specify a system user:"
  do_mysql_final "user = $REPLY"
}

do_mysql_password() {
  inputBox "mysql action wizard" "specify a mysql user:"
  user=$REPLY
  inputBox "mysql action wizard" "specify the mysql user's password:"
  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?"
  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)." off \
         "hotcopy" "create a backup using mysqlhotcopy (faster)." on \
         "compress" "compress the sql output files" on
      status=$?
      sqldump="sqldump = off"
      hotcopy="hotcopy = off"
   else
      checkBox "mysql action wizard" "check options" \
         "compress" "compress the sql output files" on
      status=$?
      sqldump="sqldump = on"
      hotcopy="hotcopy = off"
   fi

   [ $status = 1 ] && return;    
   result="$REPLY"
   compress="compress = off"
   for opt in $result; do
      case $opt in
        '"sqldump"') sqldump="sqldump = on";;
        '"hotcopy"') hotcopy="hotcopy = on";;
        '"compress"') compress="compress = on";;
      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
   chmod 000 $next_filename
}

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
}