summaryrefslogtreecommitdiff
path: root/scripts/mysql_install_db.sh
diff options
context:
space:
mode:
authorunknown <msvensson@pilot.blaudden>2007-02-26 14:25:59 +0100
committerunknown <msvensson@pilot.blaudden>2007-02-26 14:25:59 +0100
commitc431ab112dd1afb34a8e5029c638ccf0289a78cf (patch)
tree51cdb10a0d9eb61b6b3036f2ec898e83f357c172 /scripts/mysql_install_db.sh
parent1e98e7bfb241ec843bb289503c24bff34fbfe01f (diff)
parent5d4e0417ad5a4b7758f216f86ad91b97287eec29 (diff)
downloadmariadb-git-c431ab112dd1afb34a8e5029c638ccf0289a78cf.tar.gz
Merge pilot.blaudden:/home/msvensson/mysql/bug20166/my50-bug20166
into pilot.blaudden:/home/msvensson/mysql/bug20166/my51-bug20166 BitKeeper/etc/ignore: auto-union BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8: Auto merged BitKeeper/deleted/.del-mysql_create_system_tables.sh: Auto merged mysql-test/mysql-test-run.pl: Auto merged mysql-test/r/create.result: Auto merged mysql-test/r/join.result: Auto merged mysql-test/r/sp-security.result: Auto merged mysql-test/t/create.test: Auto merged mysql-test/t/grant2.test: Auto merged mysql-test/t/init_connect.test: Auto merged mysql-test/t/ndb_basic.test: Auto merged mysql-test/t/ndb_index_ordered.test: Auto merged mysql-test/t/ndb_multi.test: Auto merged scripts/Makefile.am: Auto merged BitKeeper/deleted/.del-init_db.sql~af2dfeabaa348dd7: Auto merged mysql-test/r/mysql_upgrade.result: SCCS merged mysql-test/t/lock_multi.test: Use local mysql-test/t/rpl_temporary.test: Use local mysql-test/Makefile.am: Manual merge scripts/mysql_fix_privilege_tables.sh: Manual merge scripts/mysql_fix_privilege_tables.sql.in: Manual merge scripts/mysql_install_db.sh: Manual merge
Diffstat (limited to 'scripts/mysql_install_db.sh')
-rw-r--r--scripts/mysql_install_db.sh198
1 files changed, 120 insertions, 78 deletions
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index 59645d090c4..5912dd85cfb 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -14,8 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-# This scripts creates the privilege tables db, host, user, tables_priv,
-# columns_priv, procs_priv in the mysql database, as well as the func table.
+# This scripts creates the MySQL Server system tables
#
# All unrecognized arguments to this script are passed to mysqld.
@@ -30,6 +29,14 @@ case "$1" in
;;
esac
+s_echo()
+{
+ if test "$in_rpm" -eq 0 -a "$windows" -eq 0
+ then
+ echo $1
+ fi
+}
+
parse_arguments() {
# We only need to pass arguments through to the server if we don't
# handle them here. So, we collect unrecognized options (passed on
@@ -53,9 +60,20 @@ parse_arguments() {
# where a chown of datadir won't help)
user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
--skip-name-resolve) ip_only=1 ;;
- --verbose) verbose=1 ;;
+ --verbose) verbose=1 ;; # Obsolete
--rpm) in_rpm=1 ;;
- --windows) windows=1 ;;
+
+ --windows)
+ # This is actually a "cross bootstrap" argument used when
+ # building the MySQL system tables on a different host
+ # than the target. The platform independent
+ # files that are created in --datadir on the host can
+ # be copied to the target system, the most common use for
+ # this feature is in the windows installer which will take
+ # the files from datadir and include them as part of the install
+ # package.
+ windows=1 ;;
+
*)
if test -n "$pick_args"
then
@@ -93,8 +111,6 @@ bindir=
basedir=
srcdir=
force=0
-verbose=0
-fill_help_tables=""
parse_arguments `$print_defaults $defaults mysqld mysql_install_db`
parse_arguments PICK-ARGS-FROM-ARGV "$@"
@@ -119,29 +135,42 @@ else
fi
fi
-# find fill_help_tables.sh
+# Find SQL scripts needed for bootstrap
+fill_help_tables="fill_help_tables.sql"
+create_system_tables="mysql_system_tables.sql"
if test -n "$srcdir"
then
- fill_help_tables=$srcdir/scripts/fill_help_tables.sql
+ fill_help_tables=$srcdir/scripts/$fill_help_tables
+ create_system_tables=$srcdir/scripts/$create_system_tables
else
for i in $basedir/support-files $basedir/share $basedir/share/mysql \
$basedir/scripts `pwd` `pwd`/scripts @pkgdatadir@
do
- if test -f $i/fill_help_tables.sql
+ if test -f $i/$fill_help_tables
then
pkgdatadir=$i
fi
done
- fill_help_tables=$pkgdatadir/fill_help_tables.sql
+ fill_help_tables=$pkgdatadir/$fill_help_tables
+ create_system_tables=$pkgdatadir/$create_system_tables
+fi
+
+if test ! -f $create_system_tables
+then
+ echo "FATAL ERROR: Could not find SQL file '$create_system_tables' in"
+ echo "@pkgdatadir@ or inside $basedir"
+ exit 1;
fi
if test ! -f $fill_help_tables
then
- echo "Could not find help file 'fill_help_tables.sql' in @pkgdatadir@ or inside $basedir".
+ echo "FATAL ERROR: Could not find help file '$fill_help_tables' in"
+ echo "@pkgdatadir@ or inside $basedir"
exit 1;
fi
+# Find executables and paths
mdata=$ldata/mysql
mysqld=$execdir/mysqld
mysqld_opt=""
@@ -167,7 +196,7 @@ then
echo "FATAL ERROR $mysqld not found!"
exit 1
else
- echo "Didn't find $mysqld"
+ echo "FATAL ERROR Didn't find $mysqld"
echo "You should do a 'make install' before executing this script"
exit 1
fi
@@ -187,9 +216,10 @@ then
then
echo "Neither host '$hostname' nor 'localhost' could be looked up with"
echo "$bindir/resolveip"
- echo "Please configure the 'hostname' command to return a correct hostname."
- echo "If you want to solve this at a later stage, restart this script with"
- echo "the --force option"
+ echo "Please configure the 'hostname' command to return a correct"
+ echo "hostname."
+ echo "If you want to solve this at a later stage, restart this script"
+ echo "with the --force option"
exit 1
fi
echo "WARNING: The host '$hostname' could not be looked up with resolveip."
@@ -208,101 +238,113 @@ then
fi
# Create database directories mysql & test
-
- if test ! -d $ldata; then mkdir $ldata; chmod 700 $ldata ; fi
- if test ! -d $ldata/mysql; then mkdir $ldata/mysql; chmod 700 $ldata/mysql ; fi
- if test ! -d $ldata/test; then mkdir $ldata/test; chmod 700 $ldata/test ; fi
- if test -w / -a ! -z "$user"; then
- chown $user $ldata $ldata/mysql $ldata/test;
- fi
-
-if test ! -f $mdata/db.frm
-then
- c_d="yes"
+if test ! -d $ldata; then
+ mkdir $ldata;
+ chmod 700 $ldata ;
+fi
+if test ! -d $ldata/mysql; then
+ mkdir $ldata/mysql;
+ chmod 700 $ldata/mysql ;
+fi
+if test ! -d $ldata/test; then
+ mkdir $ldata/test;
+ chmod 700 $ldata/test ;
+fi
+if test -w / -a ! -z "$user"; then
+ chown $user $ldata $ldata/mysql $ldata/test;
fi
-if test $verbose = 1
+# Check is "db" table already exist
+if test ! -f $mdata/db.frm
then
- create_option="verbose"
-else
- create_option="real"
+ db_table_already_exist="yes"
fi
if test -n "$user"; then
args="$args --user=$user"
fi
-if test "$in_rpm" -eq 0 -a "$windows" -eq 0
-then
- echo "Installing all prepared tables"
-fi
+# Peform the install of system tables
mysqld_bootstrap="${MYSQLD_BOOTSTRAP-$mysqld}"
mysqld_install_cmd_line="$mysqld_bootstrap $defaults $mysqld_opt --bootstrap \
---skip-grant-tables --basedir=$basedir --datadir=$ldata --skip-innodb \
---skip-ndbcluster $args --max_allowed_packet=8M --net_buffer_length=16K"
-if $scriptdir/mysql_create_system_tables $create_option $mdata $hostname $windows \
- | eval "$mysqld_install_cmd_line"
+--basedir=$basedir --datadir=$ldata --skip-innodb \
+--skip-ndbcluster $args --max_allowed_packet=8M \
+--net_buffer_length=16K"
+
+# Pipe mysql_system_tables.sql to "mysqld --bootstrap"
+s_echo "Installing MySQL system tables..."
+if `(echo "use mysql;"; cat $create_system_tables) | $mysqld_install_cmd_line`
then
+ s_echo "OK"
+
if test -n "$fill_help_tables"
then
- if test "$in_rpm" -eq 0 -a "$windows" -eq 0
- then
- echo "Fill help tables"
- fi
- (echo "use mysql;"; cat $fill_help_tables) | eval "$mysqld_install_cmd_line"
- res=$?
- if test $res != 0
+ s_echo "Filling help tables..."
+ # Pipe fill_help_tables.sql to "mysqld --bootstrap"
+ if `(echo "use mysql;"; cat $fill_help_tables) | $mysqld_install_cmd_line`
then
+ # Fill suceeded
+ s_echo "OK"
+ else
echo ""
echo "WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!"
echo "The \"HELP\" command might not work properly"
echo ""
fi
fi
- if test "$in_rpm" = 0 -a "$windows" = 0
- then
- echo ""
- echo "To start mysqld at boot time you have to copy support-files/mysql.server"
- echo "to the right place for your system"
- echo
- fi
+
+ s_echo ""
+ s_echo "To start mysqld at boot time you have to copy"
+ s_echo "support-files/mysql.server to the right place for your system"
+ s_echo
+
if test "$windows" -eq 0
then
- echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !"
- echo "To do so, start the server, then issue the following commands:"
- echo "$bindir/mysqladmin -u root password 'new-password'"
- echo "$bindir/mysqladmin -u root -h $hostname password 'new-password'"
- echo "See the manual for more instructions."
- #
- # Print message about upgrading unless we have created a new db table.
- if test -z "$c_d"
- then
+ # A root password should of course also be set on Windows!
+ # The reason for not displaying these prompts here is that when
+ # executing this script with the --windows argument the script
+ # is used to generate system tables mainly used by the
+ # windows installer. And thus the password should not be set until
+ # those files has been copied to the target system
+ echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !"
+ echo "To do so, start the server, then issue the following commands:"
+ echo "$bindir/mysqladmin -u root password 'new-password'"
+ echo "$bindir/mysqladmin -u root -h $hostname password 'new-password'"
+ echo "See the manual for more instructions."
+
+ # Print message about upgrading unless we have created a new db table.
+ if test -z "$db_table_already_exist"
+ then
+ echo
+ echo "NOTE: If you are upgrading from a previous MySQL verision you "
+ echo "should run '$bindir/mysql_upgrade', to make sure all tables have "
+ echo "been upgraded for this version of MySQL"
+ fi
echo
- echo "NOTE: If you are upgrading from a MySQL <= 3.22.10 you should run"
- echo "the $bindir/mysql_fix_privilege_tables. Otherwise you will not be"
- echo "able to use the new GRANT command!"
- fi
- echo
- if test "$in_rpm" = "0"
- then
- echo "You can start the MySQL daemon with:"
- echo "cd @prefix@ ; $bindir/mysqld_safe &"
+
+ if test "$in_rpm" = "0"
+ then
+ echo "You can start the MySQL daemon with:"
+ echo "cd @prefix@ ; $bindir/mysqld_safe &"
+ echo
+ echo "You can test the MySQL daemon with mysql-test-run.pl"
+ echo "cd mysql-test ; perl mysql-test-run.pl"
+ echo
+ fi
+ echo "Please report any problems with the @scriptdir@/mysqlbug script!"
echo
- fi
- echo "Please report any problems with the @scriptdir@/mysqlbug script!"
- echo
- echo "The latest information about MySQL is available on the web at"
- echo "http://www.mysql.com"
- echo "Support MySQL by buying support/licenses at http://shop.mysql.com"
+ echo "The latest information about MySQL is available on the web at"
+ echo "http://www.mysql.com"
+ echo "Support MySQL by buying support/licenses at http://shop.mysql.com"
fi
exit 0
else
echo "Installation of system tables failed!"
echo
echo "Examine the logs in $ldata for more information."
- echo "You can also try to start the mysqld daemon with:"
+ echo "You can try to start the mysqld daemon with:"
echo "$mysqld --skip-grant &"
- echo "You can use the command line tool"
+ echo "and use the command line tool"
echo "$bindir/mysql to connect to the mysql"
echo "database and look at the grant tables:"
echo