mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge production.mysql.com:/usersnfs/jperkin/bk/bug-28585-5.0
into production.mysql.com:/usersnfs/jperkin/bk/bug-28585-5.1 scripts/make_binary_distribution.sh: Auto merged scripts/mysql_install_db.sh: Merge changes from 5.0
This commit is contained in:
@ -338,7 +338,7 @@ if [ $BASE_SYSTEM != "netware" ] ; then
|
||||
copyfileto $BASE/bin scripts/*
|
||||
$BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ \
|
||||
./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ \
|
||||
@HOSTNAME@ \@pkgdatadir\@ ./support-files \
|
||||
@HOSTNAME@ \@pkgdatadir\@ ./share \
|
||||
< scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db
|
||||
$BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \
|
||||
\@sbindir\@ ./bin \@libexecdir\@ ./bin \
|
||||
|
@ -18,26 +18,68 @@
|
||||
#
|
||||
# All unrecognized arguments to this script are passed to mysqld.
|
||||
|
||||
in_rpm=0
|
||||
windows=0
|
||||
basedir=""
|
||||
ldata=""
|
||||
srcdir=""
|
||||
|
||||
args=""
|
||||
defaults=""
|
||||
mysqld_opt=""
|
||||
user=""
|
||||
|
||||
case "$1" in
|
||||
--no-defaults|--defaults-file=*|--defaults-extra-file=*)
|
||||
defaults="$1"; shift
|
||||
;;
|
||||
esac
|
||||
force=0
|
||||
in_rpm=0
|
||||
ip_only=0
|
||||
windows=0
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: $0 [OPTIONS]
|
||||
--basedir=path The path to the MySQL installation directory.
|
||||
--datadir=path The path to the MySQL data directory.
|
||||
--force Causes mysql_install_db to run even if DNS does not
|
||||
work. In that case, grant table entries that normally
|
||||
use hostnames will use IP addresses.
|
||||
--ldata=path The path to the MySQL data directory.
|
||||
--rpm For internal use. This option is used by RPM files
|
||||
during the MySQL installation process.
|
||||
--skip-name-resolve Use IP addresses rather than hostnames when creating
|
||||
grant table entries. This option can be useful if
|
||||
your DNS does not work.
|
||||
--srcdir=path For internal use. The directory under which
|
||||
mysql_install_db looks for support files such as the
|
||||
error message file and the file for popoulating the
|
||||
help tables.
|
||||
--user=user_name The login username to use for running mysqld. Files
|
||||
and directories created by mysqld will be owned by this
|
||||
user. You must be root to use this option. By default
|
||||
mysqld runs using your current login name and files and
|
||||
directories that it creates will be owned by you.
|
||||
--windows For internal use. This option is used for creating
|
||||
Windows distributions.
|
||||
|
||||
All other options are passed to the mysqld program
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
s_echo()
|
||||
{
|
||||
if test "$in_rpm" -eq 0 -a "$windows" -eq 0
|
||||
then
|
||||
echo $1
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
parse_arguments() {
|
||||
parse_arg()
|
||||
{
|
||||
echo "$1" | sed -e 's/^[^=]*=//'
|
||||
}
|
||||
|
||||
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
|
||||
# the command line) into the args variable.
|
||||
@ -48,20 +90,24 @@ parse_arguments() {
|
||||
shift
|
||||
fi
|
||||
|
||||
for arg do
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
--force) force=1 ;;
|
||||
--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--srcdir=*) srcdir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--ldata=*|--datadir=*) ldata=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
--basedir=*) basedir=`parse_arg "$arg"` ;;
|
||||
--srcdir=*) srcdir=`parse_arg "$arg"` ;;
|
||||
--ldata=*|--datadir=*) ldata=`parse_arg "$arg"` ;;
|
||||
--user=*)
|
||||
# Note that the user will be passed to mysqld so that it runs
|
||||
# as 'user' (crucial e.g. if log-bin=/some_other_path/
|
||||
# where a chown of datadir won't help)
|
||||
user=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;
|
||||
user=`parse_arg "$arg"` ;;
|
||||
--skip-name-resolve) ip_only=1 ;;
|
||||
--verbose) verbose=1 ;; # Obsolete
|
||||
--rpm) in_rpm=1 ;;
|
||||
--help) usage ;;
|
||||
--no-defaults|--defaults-file=*|--defaults-extra-file=*)
|
||||
defaults="$arg" ;;
|
||||
|
||||
--windows)
|
||||
# This is actually a "cross bootstrap" argument used when
|
||||
@ -89,137 +135,152 @@ parse_arguments() {
|
||||
done
|
||||
}
|
||||
|
||||
# Get first arguments from the my.cfg file, groups [mysqld] and
|
||||
# [mysql_install_db], and then merge with the command line arguments
|
||||
if test -x ./bin/my_print_defaults
|
||||
then
|
||||
print_defaults="./bin/my_print_defaults"
|
||||
elif test -x ./extra/my_print_defaults
|
||||
then
|
||||
print_defaults="./extra/my_print_defaults"
|
||||
elif test -x @bindir@/my_print_defaults
|
||||
then
|
||||
print_defaults="@bindir@/my_print_defaults"
|
||||
elif test -x @bindir@/mysql_print_defaults
|
||||
then
|
||||
print_defaults="@bindir@/mysql_print_defaults"
|
||||
else
|
||||
print_defaults="my_print_defaults"
|
||||
fi
|
||||
# Try to find a specific file within --basedir which can either be a binary
|
||||
# release or installed source directory and return the path.
|
||||
find_in_basedir()
|
||||
{
|
||||
case "$1" in
|
||||
--dir)
|
||||
return_dir=1; shift
|
||||
;;
|
||||
esac
|
||||
|
||||
args=
|
||||
ldata=
|
||||
execdir=
|
||||
bindir=
|
||||
basedir=
|
||||
srcdir=
|
||||
force=0
|
||||
file=$1; shift
|
||||
|
||||
parse_arguments `$print_defaults $defaults mysqld mysql_install_db`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
test -z "$ldata" && ldata=@localstatedir@
|
||||
if test -z "$basedir"
|
||||
then
|
||||
basedir=@prefix@
|
||||
bindir=@bindir@
|
||||
execdir=@libexecdir@
|
||||
pkgdatadir=@pkgdatadir@
|
||||
else
|
||||
bindir="$basedir/bin"
|
||||
if test -x "$basedir/libexec/mysqld"
|
||||
then
|
||||
execdir="$basedir/libexec"
|
||||
elif test -x "$basedir/sbin/mysqld"
|
||||
then
|
||||
execdir="$basedir/sbin"
|
||||
else
|
||||
execdir="$basedir/bin"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Find SQL scripts needed for bootstrap
|
||||
fill_help_tables="fill_help_tables.sql"
|
||||
create_system_tables="mysql_system_tables.sql"
|
||||
fill_system_tables="mysql_system_tables_data.sql"
|
||||
if test -n "$srcdir"
|
||||
then
|
||||
fill_help_tables=$srcdir/scripts/$fill_help_tables
|
||||
create_system_tables=$srcdir/scripts/$create_system_tables
|
||||
fill_system_tables=$srcdir/scripts/$fill_system_tables
|
||||
else
|
||||
for i in $basedir/support-files $basedir/share $basedir/share/mysql \
|
||||
$basedir/scripts `pwd` `pwd`/scripts @pkgdatadir@
|
||||
for dir in "$@"
|
||||
do
|
||||
if test -f $i/$fill_help_tables
|
||||
if test -f "$basedir/$dir/$file"
|
||||
then
|
||||
pkgdatadir=$i
|
||||
if test -n "$return_dir"
|
||||
then
|
||||
echo "$basedir/$dir"
|
||||
else
|
||||
echo "$basedir/$dir/$file"
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
fill_help_tables=$pkgdatadir/$fill_help_tables
|
||||
create_system_tables=$pkgdatadir/$create_system_tables
|
||||
fill_system_tables=$pkgdatadir/$fill_system_tables
|
||||
fi
|
||||
missing_in_basedir()
|
||||
{
|
||||
echo "FATAL ERROR: Could not find $* inside --basedir"
|
||||
echo
|
||||
echo "When using --basedir you must point either into a MySQL binary"
|
||||
echo "distribution directory or a compiled tree previously populated"
|
||||
echo "by 'make install'"
|
||||
}
|
||||
|
||||
if test ! -f $create_system_tables
|
||||
# Ok, let's go. We first need to parse arguments which are required by
|
||||
# my_print_defaults so that we can execute it first, then later re-parse
|
||||
# the command line to add any extra bits that we need.
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
# We can now find my_print_defaults, either in the supplied --basedir
|
||||
# location or in the installed area.
|
||||
if test -n "$basedir"
|
||||
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
|
||||
print_defaults=`find_in_basedir my_print_defaults bin extra`
|
||||
if ! test -x "$print_defaults"
|
||||
then
|
||||
echo "FATAL ERROR: Could not find help file '$fill_help_tables' in"
|
||||
echo "@pkgdatadir@ or inside $basedir"
|
||||
exit 1;
|
||||
missing_in_basedir my_print_defaults
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test ! -f $fill_system_tables
|
||||
else
|
||||
print_defaults="@bindir@/my_print_defaults"
|
||||
if ! test -x "$print_defaults"
|
||||
then
|
||||
echo "FATAL ERROR: Could not find help file '$fill_system_tables' in"
|
||||
echo "@pkgdatadir@ or inside $basedir"
|
||||
exit 1;
|
||||
echo "FATAL ERROR: Could not find $print_defaults"
|
||||
echo
|
||||
echo "If you are using a binary release, you must run this script from"
|
||||
echo "within the directory the archive extracted into. If you compiled"
|
||||
echo "MySQL yourself you must run 'make install' first."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Find executables and paths
|
||||
mysqld=$execdir/mysqld
|
||||
mysqld_opt=""
|
||||
scriptdir=$bindir
|
||||
# Now we can get arguments from the groups [mysqld] and [mysql_install_db]
|
||||
# in the my.cfg file, then re-run to merge with command line arguments.
|
||||
parse_arguments `$print_defaults $defaults mysqld mysql_install_db`
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
if test "$windows" = 1
|
||||
# Path to MySQL installation directory
|
||||
if test -z "$basedir"
|
||||
then
|
||||
basedir="@prefix@"
|
||||
bindir="@bindir@"
|
||||
mysqld="@libexecdir@/mysqld"
|
||||
pkgdatadir="@pkgdatadir@"
|
||||
else
|
||||
bindir="$basedir/bin"
|
||||
# We set up bootstrap-specific paths later, so skip this for --windows
|
||||
if test "$windows" -eq 0
|
||||
then
|
||||
pkgdatadir=`find_in_basedir --dir fill_help_tables.sql share share/mysql`
|
||||
if test -z "$pkgdatadir"
|
||||
then
|
||||
missing_in_basedir fill_help_tables.sql
|
||||
exit 1
|
||||
fi
|
||||
mysqld=`find_in_basedir mysqld libexec sbin bin`
|
||||
if ! test -x "$mysqld"
|
||||
then
|
||||
missing_in_basedir mysqld
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Path to data directory
|
||||
if test -z "$ldata"
|
||||
then
|
||||
ldata="@localstatedir@"
|
||||
fi
|
||||
|
||||
# Set up paths to SQL scripts required for bootstrap and ensure they exist.
|
||||
if test -n "$srcdir"
|
||||
then
|
||||
pkgdatadir="$srcdir/scripts"
|
||||
fi
|
||||
|
||||
fill_help_tables="$pkgdatadir/fill_help_tables.sql"
|
||||
create_system_tables="$pkgdatadir/mysql_system_tables.sql"
|
||||
fill_system_tables="$pkgdatadir/mysql_system_tables_data.sql"
|
||||
|
||||
for f in $fill_help_tables $create_system_tables $fill_system_tables
|
||||
do
|
||||
if test ! -f "$f"
|
||||
then
|
||||
echo "FATAL ERROR: Could not find SQL file '$f'"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Set up Windows-specific paths
|
||||
if test "$windows" -eq 1
|
||||
then
|
||||
mysqld="./sql/mysqld"
|
||||
if test -n "$srcdir" -a -f $srcdir/sql/share/english/errmsg.sys
|
||||
if test -n "$srcdir" -a -f "$srcdir/sql/share/english/errmsg.sys"
|
||||
then
|
||||
langdir=$srcdir/sql/share/english
|
||||
mysqld_opt="--language=$srcdir/sql/share/english"
|
||||
else
|
||||
langdir=./sql/share/english
|
||||
mysqld_opt="--language=./sql/share/english"
|
||||
fi
|
||||
mysqld_opt="--language=$langdir"
|
||||
scriptdir="./scripts"
|
||||
fi
|
||||
|
||||
if test ! -x $mysqld
|
||||
# Make sure mysqld is available in default location (--basedir option is
|
||||
# already tested above).
|
||||
if test ! -x "$mysqld"
|
||||
then
|
||||
if test "$in_rpm" = 1
|
||||
then
|
||||
echo "FATAL ERROR $mysqld not found!"
|
||||
echo "FATAL ERROR: $mysqld not found!"
|
||||
exit 1
|
||||
else
|
||||
echo "FATAL ERROR Didn't find $mysqld"
|
||||
echo "You should do a 'make install' before executing this script"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Try to determine the hostname
|
||||
hostname=`@HOSTNAME@`
|
||||
|
||||
# Check if hostname is valid
|
||||
if test "$windows" = 0 -a "$in_rpm" = 0 -a $force = 0
|
||||
if test "$windows" -eq 0 -a "$in_rpm" -eq 0 -a "$force" -eq 0
|
||||
then
|
||||
resolved=`$bindir/resolveip $hostname 2>&1`
|
||||
if [ $? -ne 0 ]
|
||||
@ -244,30 +305,27 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$ip_only" = "1"
|
||||
if test "$ip_only" -eq 1
|
||||
then
|
||||
ip=`echo "$resolved" | awk '/ /{print $6}'`
|
||||
hostname=$ip
|
||||
hostname=`echo "$resolved" | awk '/ /{print $6}'`
|
||||
fi
|
||||
|
||||
# Create database directories mysql & test
|
||||
if test ! -d $ldata; then
|
||||
mkdir $ldata;
|
||||
chmod 700 $ldata ;
|
||||
for dir in $ldata $ldata/mysql $ldata/test
|
||||
do
|
||||
if test ! -d $dir
|
||||
then
|
||||
mkdir -p $dir
|
||||
chmod 700 $dir
|
||||
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;
|
||||
if test -w / -a ! -z "$user"
|
||||
then
|
||||
chown $user $dir
|
||||
fi
|
||||
done
|
||||
|
||||
if test -n "$user"; then
|
||||
if test -n "$user"
|
||||
then
|
||||
args="$args --user=$user"
|
||||
fi
|
||||
|
||||
@ -284,8 +342,6 @@ if `(echo "use mysql;"; cat $create_system_tables $fill_system_tables) | $mysqld
|
||||
then
|
||||
s_echo "OK"
|
||||
|
||||
if test -n "$fill_help_tables"
|
||||
then
|
||||
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`
|
||||
@ -293,14 +349,13 @@ then
|
||||
# Fill suceeded
|
||||
s_echo "OK"
|
||||
else
|
||||
echo ""
|
||||
echo
|
||||
echo "WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!"
|
||||
echo "The \"HELP\" command might not work properly"
|
||||
echo ""
|
||||
fi
|
||||
echo
|
||||
fi
|
||||
|
||||
s_echo ""
|
||||
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
|
||||
@ -319,7 +374,7 @@ then
|
||||
echo "$bindir/mysqladmin -u root -h $hostname password 'new-password'"
|
||||
echo "See the manual for more instructions."
|
||||
|
||||
if test "$in_rpm" = "0"
|
||||
if test "$in_rpm" -eq 0
|
||||
then
|
||||
echo "You can start the MySQL daemon with:"
|
||||
echo "cd @prefix@ ; $bindir/mysqld_safe &"
|
||||
|
Reference in New Issue
Block a user