~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to scripts/mysql_fix_privilege_tables.sh

Deleted tons of pointless garbage from scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/sh
2
 
# Copyright (C) 2000-2006 MySQL AB
3
 
4
 
# This program is free software; you can redistribute it and/or modify
5
 
# it under the terms of the GNU General Public License as published by
6
 
# the Free Software Foundation; version 2 of the License.
7
 
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
13
 
# You should have received a copy of the GNU General Public License
14
 
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
16
 
 
17
 
# This script is a wrapper to pipe the mysql_fix_privilege_tables.sql
18
 
# through the mysql client program to the mysqld server
19
 
 
20
 
# Default values (Can be changed in my.cnf)
21
 
password=""
22
 
host="localhost"
23
 
user="root"
24
 
sql_only=0
25
 
basedir="@prefix@"
26
 
verbose=0
27
 
args=""
28
 
# no elaborate fallback here; with no argument, it will happen in "mysql"
29
 
port=""
30
 
socket=""
31
 
database="mysql"
32
 
bindir=""
33
 
pkgdatadir="@pkgdatadir@"
34
 
print_defaults_bindir="."
35
 
 
36
 
file=mysql_fix_privilege_tables.sql
37
 
 
38
 
# The following test is to make this script compatible with the 4.0 where
39
 
# the single argument could be a password
40
 
if test "$#" = 1
41
 
then
42
 
  case "$1" in
43
 
  --*) ;;
44
 
  *) old_style_password="$1" ; shift ;;
45
 
  esac
46
 
fi
47
 
 
48
 
# The following code is almost identical to the code in mysql_install_db.sh
49
 
 
50
 
case "$1" in
51
 
    --no-defaults|--defaults-file=*|--defaults-extra-file=*)
52
 
      defaults="$1"; shift
53
 
      ;;
54
 
esac
55
 
 
56
 
parse_arguments() {
57
 
  # We only need to pass arguments through to the server if we don't
58
 
  # handle them here.  So, we collect unrecognized options (passed on
59
 
  # the command line) into the args variable.
60
 
  pick_args=
61
 
  if test "$1" = PICK-ARGS-FROM-ARGV
62
 
  then
63
 
    pick_args=1
64
 
    shift
65
 
  fi
66
 
 
67
 
  for arg do
68
 
    case "$arg" in
69
 
      --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
70
 
      --user=*) user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
71
 
      --password=*) password=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
72
 
      --host=*) host=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
73
 
      --sql|--sql-only) sql_only=1 ;;
74
 
      --verbose) verbose=1 ;;
75
 
      --port=*) port=`echo "$arg" | sed -e "s;--port=;;"` ;;
76
 
      --socket=*) socket=`echo "$arg" | sed -e "s;--socket=;;"` ;;
77
 
      --database=*) database=`echo "$arg" | sed -e "s;--database=;;"` ;;
78
 
      --bindir=*) bindir=`echo "$arg" | sed -e "s;--bindir=;;"`
79
 
                  print_defaults_bindir=$bindir
80
 
                  ;;
81
 
      *)
82
 
        if test -n "$pick_args"
83
 
        then
84
 
          # This sed command makes sure that any special chars are quoted,
85
 
          # so the arg gets passed exactly to the server.
86
 
          args="$args "`echo "$arg" | sed -e 's,\([^=a-zA-Z0-9_.-]\),\\\\\1,g'`
87
 
        fi
88
 
        ;;
89
 
    esac
90
 
  done
91
 
}
92
 
 
93
 
# Get first arguments from the my.cfg file, groups [mysqld] and
94
 
# [mysql_install_db], and then merge with the command line arguments
95
 
 
96
 
print_defaults=my_print_defaults
97
 
for dir in ./bin @bindir@ @bindir@ extra $print_defaults_bindir/../bin $print_defaults_bindir/../extra
98
 
do
99
 
  if test -x $dir/my_print_defaults
100
 
  then
101
 
    print_defaults="$dir/my_print_defaults"
102
 
    break
103
 
  fi
104
 
done
105
 
 
106
 
parse_arguments `$print_defaults $defaults mysql_install_db mysql_fix_privilege_tables`
107
 
parse_arguments PICK-ARGS-FROM-ARGV "$@"
108
 
 
109
 
if test -z "$password"
110
 
then
111
 
  password=$old_style_password
112
 
fi
113
 
 
114
 
# Find where 'mysql' command is located
115
 
 
116
 
dirname=`dirname "$0"`
117
 
 
118
 
if test -z "$bindir"
119
 
then
120
 
  for i in @bindir@ $basedir/bin "$dirname/../client"
121
 
  do
122
 
    if test -f $i/mysql
123
 
    then
124
 
      bindir=$i
125
 
      break
126
 
    fi
127
 
  done
128
 
fi
129
 
 
130
 
if test -z "$bindir"
131
 
then
132
 
  echo "Could not find MySQL command-line client (mysql)."
133
 
  echo "Please use --basedir to specify the directory where MySQL is installed."
134
 
  exit 1
135
 
fi
136
 
 
137
 
cmd="$bindir/mysql --no-defaults --force --user=$user --host=$host"
138
 
if test ! -z "$port"; then
139
 
  cmd="$cmd --port=$port"
140
 
fi
141
 
if test ! -z "$socket"; then
142
 
  cmd="$cmd --socket=$socket"
143
 
fi
144
 
cmd="$cmd --database=$database"
145
 
 
146
 
if test $sql_only = 1
147
 
then
148
 
  cmd="cat"
149
 
fi
150
 
 
151
 
# Find where first mysql_fix_privilege_tables.sql is located
152
 
for i in $basedir/support-files $basedir/share $basedir/share/mysql \
153
 
        $basedir/scripts $pkgdatadir . "$dirname"
154
 
do
155
 
  if test -f $i/$file
156
 
  then
157
 
    pkgdatadir=$i
158
 
    break
159
 
  fi
160
 
done
161
 
 
162
 
sql_file="$pkgdatadir/$file"
163
 
if test ! -f $sql_file
164
 
then
165
 
  echo "Could not find file '$file'."
166
 
  echo "Please use --basedir to specify the directory where MySQL is installed"
167
 
  exit 1
168
 
fi
169
 
 
170
 
s_echo()
171
 
{
172
 
   if test $sql_only = 0
173
 
   then
174
 
     echo $1
175
 
   fi
176
 
}
177
 
 
178
 
s_echo "This script updates all the mysql privilege tables to be usable by"
179
 
s_echo "the current version of MySQL"
180
 
s_echo ""
181
 
 
182
 
if test $verbose = 1
183
 
then
184
 
  s_echo "You can safely ignore all 'Duplicate column' and 'Unknown column' errors"
185
 
  s_echo "because these just mean that your tables are already up to date."
186
 
  s_echo "This script is safe to run even if your tables are already up to date!"
187
 
  s_echo ""
188
 
fi
189
 
 
190
 
run_cmd() {
191
 
  # Password argument is added here to allow for spaces in password.
192
 
  
193
 
  if test ! -z "$password"
194
 
  then
195
 
    cat $sql_file | $cmd --password="$password"
196
 
  else
197
 
    cat $sql_file | $cmd
198
 
  fi
199
 
}
200
 
 
201
 
if test $verbose = 0
202
 
then
203
 
  run_cmd > /dev/null 2>&1
204
 
else
205
 
  run_cmd > /dev/null
206
 
fi
207
 
if test $? = 0
208
 
then
209
 
  s_echo "done"
210
 
else
211
 
  s_echo "Got a failure from command:"
212
 
  s_echo "cat $sql_file | $cmd"
213
 
  s_echo "Please check the above output and try again."
214
 
  if test $verbose = 0
215
 
  then
216
 
    s_echo ""
217
 
    s_echo "Running the script with the --verbose option may give you some information"
218
 
    s_echo "of what went wrong."
219
 
  fi
220
 
  s_echo ""
221
 
  s_echo "If you get an 'Access denied' error, you should run this script again and"
222
 
  s_echo "give the MySQL root user password as an argument with the --password= option"
223
 
fi