summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/CMakeLists.txt1
-rwxr-xr-xscripts/make_win_bin_dist416
-rw-r--r--scripts/mysql_install_db.pl.in659
-rw-r--r--scripts/mysql_install_db.sh47
-rw-r--r--scripts/mysql_system_tables_data.sql17
-rw-r--r--scripts/mysql_test_db.sql31
-rw-r--r--scripts/wsrep_sst_xtrabackup.sh1
7 files changed, 61 insertions, 1111 deletions
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index fc133f53b37..d7f7906f713 100644
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -95,6 +95,7 @@ INSTALL(FILES
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
${CMAKE_CURRENT_SOURCE_DIR}/mysql_performance_tables.sql
+ ${CMAKE_CURRENT_SOURCE_DIR}/mysql_test_db.sql
${CMAKE_CURRENT_SOURCE_DIR}/fill_help_tables.sql
${CMAKE_CURRENT_SOURCE_DIR}/mysql_test_data_timezone.sql
${CMAKE_CURRENT_SOURCE_DIR}/mysql_to_mariadb.sql
diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist
deleted file mode 100755
index 2415d4017e4..00000000000
--- a/scripts/make_win_bin_dist
+++ /dev/null
@@ -1,416 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2006, 2011, Oracle and/or its affiliates.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-# Exit if failing to copy, we want exact specifications, not
-# just "what happen to be built".
-set -e
-
-# ----------------------------------------------------------------------
-# Read first argument that is the base name of the resulting TAR file.
-# See usage() function below for a description on the arguments.
-#
-# NOTE: We will read the rest of the command line later on.
-# NOTE: Pattern matching with "{..,..}" can't be used, not portable.
-# ----------------------------------------------------------------------
-
-# FIXME why "libmysql.dll" installed both in "bin" and "lib/opt"?
-
-usage()
-{
- echo <<EOF
-Usage: make_win_bin_dist [ options ] package-base-name [ copy-defs... ]
-
-This is a script to run from the top of a source tree built on Windows.
-The "package-base-name" argument should be something like
-
- mysql-noinstall-5.0.25-win32 (or winx64)
-
-and will become the name of the directory of the unpacked ZIP (stripping
-away the "noinstall" part of the ZIP file name if any) and the base
-for the resulting package name.
-
-Options are
-
- --embedded Pack the embedded server and give error if not built.
- The default is to pack it if it is built.
-
- --no-embedded Don't pack the embedded server even if built
-
- --debug Pack the debug binaries and give error if not built.
- The default is to pack them if they are built.
-
- --no-debug Don't pack the debug binaries even if built
-
- --only-debug The target for this build was "Debug", and we just
- want to replace the normal binaries with debug
- versions, i.e. no separate "debug" directories.
-
- --exe-suffix=SUF Add a suffix to the filename part of the "mysqld" binary.
-
-As you might want to include files of directories from other builds
-(like a "mysqld-max.exe" server), you can instruct this script to copy
-them in for you. This is the "copy-def" arguments, and they are of the
-form
-
- relative-dest-name=source-name .....
-
-i.e. can be something like
-
- bin/mysqld-max.exe=../my-max-build/sql/release/mysqld.exe
-
-If you specify a directory the whole directory will be copied.
-
-EOF
- exit 1
-}
-
-# ----------------------------------------------------------------------
-# We need to be at the top of a source tree, check that we are
-# ----------------------------------------------------------------------
-
-if [ ! -d "sql" ] ; then
- echo "You need to run this script from inside the source tree"
- usage
-fi
-
-# ----------------------------------------------------------------------
-# Actual argument processing, first part
-# ----------------------------------------------------------------------
-
-NOINST_NAME=""
-TARGET="release"
-PACK_EMBEDDED="" # Could be "no", "yes" or empty
-PACK_DEBUG="" # Could be "no", "yes" or empty
-EXE_SUFFIX=""
-
-for arg do
- shift
- case "$arg" in
- --embedded) PACK_EMBEDDED="yes" ;;
- --no-embedded) PACK_EMBEDDED="no" ;;
- --debug) PACK_DEBUG="yes" ;;
- --no-debug) PACK_DEBUG="no" ;;
- --only-debug) TARGET="debug" ; PACK_DEBUG="no" ;;
- --exe-suffix=*) EXE_SUFFIX=`echo "$arg" | sed -e "s,--exe-suffix=,,"` ;;
- -*)
- echo "Unknown argument '$arg'"
- usage
- ;;
- *)
- NOINST_NAME="$arg"
- break
- esac
-done
-
-if [ x"$NOINST_NAME" = x"" ] ; then
- echo "No base package name given"
- usage
-fi
-DESTDIR=`echo $NOINST_NAME | sed 's/-noinstall-/-/'`
-
-if [ -e $DESTDIR ] ; then
- echo "Please remove the old $DESTDIR before running this script"
- usage
-fi
-
-trap 'echo "Cleaning up and exiting..." ; rm -fr $DESTDIR; exit 1' ERR
-
-# ----------------------------------------------------------------------
-# Adjust target name if needed, release with debug info has another name
-# ----------------------------------------------------------------------
-
-if [ x"$TARGET" = x"release" -a -f "client/relwithdebinfo/mysql.exe" ]
-then
- TARGET="relwithdebinfo"
-fi
-
-# ----------------------------------------------------------------------
-# Copy executables, and client DLL
-# ----------------------------------------------------------------------
-MYISAM_BINARIES="myisamchk myisamlog myisampack myisam_ftdump"
-MARIA_BINARIES="aria_chk aria_dump_log aria_ftdump aria_pack aria_read_log"
-mkdir $DESTDIR
-mkdir $DESTDIR/bin
-cp client/$TARGET/*.exe $DESTDIR/bin/
-cp extra/$TARGET/*.exe $DESTDIR/bin/
-
-# MyISAM
-#cp storage/myisam/$TARGET/*.exe $DESTDIR/bin/
-for eng in $MYISAM_BINARIES ; do
- cp storage/myisam/$TARGET/$eng.{exe,pdb} $DESTDIR/bin
-done
-
-# Maria
-for eng in $MARIA_BINARIES ; do
- cp storage/maria/$TARGET/$eng.{exe,pdb} $DESTDIR/bin
-done
-
-if [ x"$TARGET" != x"release" ] ; then
- cp client/$TARGET/mysql.pdb $DESTDIR/bin/
- cp client/$TARGET/mysqladmin.pdb $DESTDIR/bin/
- cp client/$TARGET/mysqlbinlog.pdb $DESTDIR/bin/
- cp client/$TARGET/mysqldump.pdb $DESTDIR/bin/
- cp client/$TARGET/mysqlimport.pdb $DESTDIR/bin/
- cp client/$TARGET/mysqlshow.pdb $DESTDIR/bin/
-fi
-cp tests/$TARGET/*.exe $DESTDIR/bin/
-cp libmysql/$TARGET/libmysql.dll $DESTDIR/bin/
-
-cp sql/$TARGET/mysqld.exe $DESTDIR/bin/mysqld$EXE_SUFFIX.exe
-if [ x"$TARGET" != x"release" ] ; then
- cp sql/$TARGET/mysqld.pdb $DESTDIR/bin/mysqld$EXE_SUFFIX.pdb
-fi
-
-if [ x"$PACK_DEBUG" = x"" -a -f "sql/debug/mysqld.exe" -o \
- x"$PACK_DEBUG" = x"yes" ] ; then
- cp sql/debug/mysqld.exe $DESTDIR/bin/mysqld-debug.exe
- cp sql/debug/mysqld.pdb $DESTDIR/bin/mysqld-debug.pdb
-fi
-
-# ----------------------------------------------------------------------
-# Copy data directory, readme files etc
-# ----------------------------------------------------------------------
-
-if [ -d win/data ] ; then
- cp -pR win/data $DESTDIR/
-fi
-
-mkdir $DESTDIR/Docs
-cp Docs/INSTALL-BINARY $DESTDIR/Docs/
-cp Docs/manual.chm $DESTDIR/Docs/ || /bin/true
-cp ChangeLog $DESTDIR/Docs/ || /bin/true
-cp support-files/my-*.ini $DESTDIR/
-cp README $DESTDIR/
-
-if [ -f COPYING ] ; then
- cp COPYING EXCEPTIONS-CLIENT $DESTDIR/
- cp COPYING $DESTDIR/Docs/
-fi
-
-# ----------------------------------------------------------------------
-# These will be filled in when we enable embedded. Note that if no
-# argument is given, it is copied if exists, else a check is done.
-# ----------------------------------------------------------------------
-
-copy_embedded()
-{
- mkdir -p $DESTDIR/Embedded/DLL/release \
- $DESTDIR/Embedded/static/release \
- $DESTDIR/include
- cp libmysqld/libmysqld.def $DESTDIR/include/
- cp libmysqld/$TARGET/mysqlserver.lib $DESTDIR/Embedded/static/release/
- cp libmysqld/$TARGET/libmysqld.dll $DESTDIR/Embedded/DLL/release/
- cp libmysqld/$TARGET/libmysqld.exp $DESTDIR/Embedded/DLL/release/
- cp libmysqld/$TARGET/libmysqld.lib $DESTDIR/Embedded/DLL/release/
- if [ x"$TARGET" != x"release" ] ; then
- cp libmysqld/$TARGET/mysqlserver.pdb $DESTDIR/Embedded/static/release/
- cp libmysqld/$TARGET/libmysqld.pdb $DESTDIR/Embedded/DLL/release/
- fi
-
- if [ x"$PACK_DEBUG" = x"" -a -f "libmysqld/debug/libmysqld.lib" -o \
- x"$PACK_DEBUG" = x"yes" ] ; then
- mkdir -p $DESTDIR/Embedded/DLL/debug \
- $DESTDIR/Embedded/static/debug
- cp libmysqld/debug/mysqlserver.lib $DESTDIR/Embedded/static/debug/
- cp libmysqld/debug/mysqlserver.pdb $DESTDIR/Embedded/static/debug/
- cp libmysqld/debug/libmysqld.dll $DESTDIR/Embedded/DLL/debug/
- cp libmysqld/debug/libmysqld.exp $DESTDIR/Embedded/DLL/debug/
- cp libmysqld/debug/libmysqld.lib $DESTDIR/Embedded/DLL/debug/
- cp libmysqld/debug/libmysqld.pdb $DESTDIR/Embedded/DLL/debug/
- fi
-}
-
-if [ x"$PACK_EMBEDDED" = x"" -a \
- -f "libmysqld/$TARGET/mysqlserver.lib" -a \
- -f "libmysqld/$TARGET/libmysqld.lib" -o \
- x"$PACK_EMBEDDED" = x"yes" ] ; then
- copy_embedded
-fi
-
-# ----------------------------------------------------------------------
-# Note: Make sure to sync with include/Makefile.am and WiX installer
-# XML specifications
-# ----------------------------------------------------------------------
-
-mkdir -p $DESTDIR/include
-cp include/mysql.h \
- include/mysql_com.h \
- include/mysql_time.h \
- include/my_list.h \
- include/my_alloc.h \
- include/typelib.h \
- include/my_dbug.h \
- include/m_string.h \
- include/my_sys.h \
- include/my_xml.h \
- include/mysql_embed.h \
- include/my_pthread.h \
- include/my_no_pthread.h \
- include/decimal.h \
- include/errmsg.h \
- include/my_global.h \
- include/my_config.h \
- include/my_net.h \
- include/my_getopt.h \
- include/sslopt-longopts.h \
- include/my_dir.h \
- include/sslopt-vars.h \
- 'include/sslopt-case.h' \
- include/sql_common.h \
- include/keycache.h \
- include/m_ctype.h \
- include/my_attribute.h \
- include/my_compiler.h \
- include/mysqld_error.h \
- include/sql_state.h \
- include/mysqld_ername.h \
- include/mysql_version.h \
- libmysql/libmysql.def \
- $DESTDIR/include/
-
-mkdir -p $DESTDIR/include/mysql
-cp include/mysql/plugin.h $DESTDIR/include/mysql/
-
-# ----------------------------------------------------------------------
-# Client libraries, and other libraries
-# ----------------------------------------------------------------------
-
-mkdir -p $DESTDIR/lib/opt
-mkdir -p $DESTDIR/lib/plugin
-cp sql/$TARGET/mysqld.lib $DESTDIR/lib/
-cp libmysql/$TARGET/libmysql.dll \
- libmysql/$TARGET/libmysql.lib \
- libmysql/$TARGET/mysqlclient.lib \
- mysys/$TARGET/mysys.lib \
- regex/$TARGET/regex.lib \
- strings/$TARGET/strings.lib \
- zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
-cp storage/*/$TARGET/ha_*.dll $DESTDIR/lib/plugin/
-
-if [ x"$TARGET" != x"release" ] ; then
- cp libmysql/$TARGET/libmysql.pdb \
- libmysql/$TARGET/mysqlclient.pdb \
- mysys/$TARGET/mysys.pdb \
- regex/$TARGET/regex.pdb \
- strings/$TARGET/strings.pdb \
- zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
- cp storage/*/$TARGET/ha_*.pdb $DESTDIR/lib/plugin/
-fi
-
-
-if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
- x"$PACK_DEBUG" = x"yes" ] ; then
- mkdir -p $DESTDIR/lib/debug
- mkdir -p $DESTDIR/lib/plugin/debug
- cp libmysql/debug/libmysql.dll \
- libmysql/debug/libmysql.lib \
- libmysql/debug/libmysql.pdb \
- libmysql/debug/mysqlclient.lib \
- libmysql/debug/mysqlclient.pdb \
- mysys/debug/mysys.lib \
- mysys/debug/mysys.pdb \
- regex/debug/regex.lib \
- regex/debug/regex.pdb \
- strings/debug/strings.lib \
- strings/debug/strings.pdb \
- zlib/debug/zlib.lib \
- zlib/debug/zlib.pdb $DESTDIR/lib/debug/
- cp storage/*/debug/ha_*.dll \
- storage/*/debug/ha_*.lib \
- storage/*/debug/ha_*.pdb \
- $DESTDIR/lib/plugin/debug/
-fi
-
-# ----------------------------------------------------------------------
-# Copy the test directory
-# ----------------------------------------------------------------------
-
-mkdir $DESTDIR/mysql-test
-cp mysql-test/mysql-test-run.pl $DESTDIR/mysql-test/
-cp mysql-test/mysql-stress-test.pl $DESTDIR/mysql-test/
-cp mysql-test/README $DESTDIR/mysql-test/
-cp -R mysql-test/{t,r,include,suite,std_data,lib,collections} $DESTDIR/mysql-test/
-
-rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_kill.{dir,vcproj}
-rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_process.{dir,vcproj}
-rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb}
-
-
-# Note that this will not copy "extra" if a soft link
-if [ -d mysql-test/extra ] ; then
- mkdir $DESTDIR/mysql-test/extra
- cp -pR mysql-test/extra/* $DESTDIR/mysql-test/extra/
-fi
-
-# ----------------------------------------------------------------------
-# Copy what could be usable in the "scripts" directory
-# ----------------------------------------------------------------------
-
-mysql_scripts="\
-mysql_config.pl \
-mysql_convert_table_format.pl \
-mysql_install_db.pl \
-mysql_secure_installation.pl \
-mysqld_multi.pl \
-mysqldumpslow.pl \
-mysqlhotcopy.pl \
-mytop.pl \
-"
-
-mkdir -p $DESTDIR/scripts
-
-for i in $mysql_scripts
-do
- cp scripts/$i $DESTDIR/scripts/$i
-done
-
-cp -pR sql/share $DESTDIR/
-cp -pR sql-bench $DESTDIR/
-rm -f $DESTDIR/sql-bench/*.sh $DESTDIR/sql-bench/Makefile*
-
-# The SQL initialisation code is to be in "share"
-cp scripts/*.sql $DESTDIR/share/
-
-# ----------------------------------------------------------------------
-# Clean up from possibly copied SCCS directories
-# ----------------------------------------------------------------------
-
-rm -rf `/bin/find $DISTDIR -type d -name SCCS -print`
-
-# ----------------------------------------------------------------------
-# Copy other files specified on command line DEST=SOURCE
-# ----------------------------------------------------------------------
-
-for arg do
- dst=`echo $arg | sed -n 's/=.*$//p'`
- src=`echo $arg | sed -n 's/^.*=//p'`
-
- if [ x"$dst" = x"" -o x"$src" = x"" ] ; then
- echo "Invalid specification of what to copy"
- usage
- fi
-
- mkdir -p `dirname $DESTDIR/$dst`
- cp -pR "$src" $DESTDIR/$dst
-done
-
-# ----------------------------------------------------------------------
-# Finally create the ZIP archive
-# ----------------------------------------------------------------------
-
-rm -f $NOINST_NAME.zip
-zip -r $NOINST_NAME.zip $DESTDIR
-rm -Rf $DESTDIR
diff --git a/scripts/mysql_install_db.pl.in b/scripts/mysql_install_db.pl.in
deleted file mode 100644
index 9d2c1f6874a..00000000000
--- a/scripts/mysql_install_db.pl.in
+++ /dev/null
@@ -1,659 +0,0 @@
-#!@PERL_PATH@
-# -*- cperl -*-
-#
-# Copyright (c) 2007, 2017, Oracle and/or its affiliates.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# 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 MySQL Server system tables.
-#
-# This script try to match the shell script version as close as possible,
-# but in addition being compatible with ActiveState Perl on Windows.
-#
-# All unrecognized arguments to this script are passed to mysqld.
-#
-# NOTE: This script in 5.0 doesn't really match the shell script
-# version 100%, it is more close to the 5.1 version.
-#
-# NOTE: This script was deliberately written to be as close to the shell
-# script as possible, to make the maintenance of both in parallel
-# easier.
-#
-##############################################################################
-
-use File::Basename;
-use Getopt::Long;
-use Sys::Hostname;
-use Data::Dumper;
-use strict;
-
-Getopt::Long::Configure("pass_through");
-
-my @args; # Argument list filled in
-
-##############################################################################
-#
-# Usage information
-#
-##############################################################################
-
-sub usage
-{
- print <<EOF;
-Usage: $0 [OPTIONS]
- --basedir=path The path to the MySQL installation directory.
- --builddir=path If using --srcdir with out-of-directory builds, you
- will need to set this to the location of the build
- directory where built files reside.
- --cross-bootstrap For internal use. Used when building the MySQL system
- tables on a different host than the target.
- --datadir=path The path to the MySQL data directory.
- --defaults-extra-file=name
- Read this file after the global files are read.
- --defaults-file=name Only read default options from the given file name.
- --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.
- --help Display this help and exit.
- --ldata=path The path to the MySQL data directory. Same as --datadir.
- --no-defaults Don't read default options from any option file.
- --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 The path to the MySQL source directory. This option
- uses the compiled binaries and support files within the
- source tree, useful for if you don't want to install
- MySQL yet and just want to create the system 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.
-
-All other options are passed to the mysqld program
-
-EOF
- exit 1;
-}
-
-##############################################################################
-#
-# Parse an argument list
-#
-# 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.
-#
-##############################################################################
-
-sub parse_arguments
-{
- my $opt = shift;
-
- my @saved_ARGV = @ARGV;
- @ARGV = @_; # Set ARGV so GetOptions works
-
- my $pick_args;
- if (@ARGV and $ARGV[0] eq 'PICK-ARGS-FROM-ARGV')
- {
- $pick_args = 1;
- shift @ARGV;
- }
-
- GetOptions(
- $opt,
- "force",
- "basedir=s",
- "builddir=s", # FIXME not documented
- "srcdir=s",
- "ldata|datadir|data=s",
-
- # 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=s",
-
- "skip-name-resolve",
- "verbose",
- "rpm",
- "help",
- "defaults-file|defaults-extra-file|no-defaults:s",
-
- # 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. See top-level 'dist-hook' make target.
- #
- # --windows is a deprecated alias
- "cross-bootstrap|windows", # FIXME undocumented, even needed?
- ) or usage();
-
- usage() if $opt->{help};
-
- @args = @ARGV if $pick_args;
-
- @ARGV = @saved_ARGV; # Set back ARGV
-}
-
-##############################################################################
-#
-# Try to find a specific file within --basedir which can either be a binary
-# release or installed source directory and return the path.
-#
-##############################################################################
-
-sub find_in_basedir
-{
- my $opt = shift;
- my $mode = shift; # "dir" or "file"
- my $files = shift;
-
- foreach my $file ( @{ref($files) ? $files : [$files]} )
- {
- foreach my $dir ( @_ )
- {
- foreach my $part ( "$file","$file.exe","release/$file.exe",
- "debug/$file.exe","relwithdebinfo/$file.exe" )
- {
- my $path = "$opt->{basedir}/$dir/$part";
- if ( -f $path )
- {
- return $mode eq "dir" ? dirname($path) : $path;
- }
- }
- }
- }
-}
-
-##############################################################################
-#
-# Just a function to write out an error report
-#
-##############################################################################
-
-sub cannot_find_file
-{
- my $file = shift;
-
- print "FATAL ERROR: Could not find $file\n";
- print "\n";
- print "If you compiled from source, you need to run 'make install' to\n";
- print "copy the software into the correct location ready for operation.\n";
- print "\n";
- print "If you are using a binary release, you must either be at the top\n";
- print "level of the extracted archive, or pass the --basedir option\n";
- print "pointing to that location.\n";
- print "\n";
-
- exit 1;
-}
-
-##############################################################################
-#
-# Form a command line that can handle spaces in paths and arguments
-#
-##############################################################################
-
-# FIXME this backslash escaping needed if using '"..."' ?
-# This regexp makes sure that any special chars are quoted,
-# so the arg gets passed exactly to the server.
-# XXX: This is broken; true fix requires using eval and proper
-# quoting of every single arg ($opt->{basedir}, $opt->{ldata}, etc.)
-# join(" ", map {s/([^\w\_\.\-])/\\$1/g}
-
-sub quote_options {
- my @cmd;
- foreach my $opt ( @_ )
- {
- next unless $opt; # If undefined or empty, just skip
- push(@cmd, "\"$opt\""); # Quote argument
- }
- return join(" ", @cmd);
-}
-
-##############################################################################
-#
-# 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.
-#
-##############################################################################
-
-my $opt = {};
-parse_arguments($opt, @ARGV);
-
-# ----------------------------------------------------------------------
-# We can now find my_print_defaults. This script supports:
-#
-# --srcdir=path pointing to compiled source tree
-# --basedir=path pointing to installed binary location
-#
-# or default to compiled-in locations.
-# ----------------------------------------------------------------------
-
-my $print_defaults;
-
-if ( $opt->{srcdir} and $opt->{basedir} )
-{
- error("Specify either --basedir or --srcdir, not both");
-}
-if ( $opt->{srcdir} )
-{
- $opt->{builddir} = $opt->{srcdir} unless $opt->{builddir};
- $print_defaults = "$opt->{builddir}/extra/my_print_defaults";
-}
-elsif ( $opt->{basedir} )
-{
- $print_defaults = find_in_basedir($opt,"file","my_print_defaults","bin","extra");
-}
-else
-{
- $print_defaults='@bindir@/my_print_defaults';
-}
-
--x $print_defaults or -f "$print_defaults.exe"
- or cannot_find_file($print_defaults);
-
-# ----------------------------------------------------------------------
-# 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.
-# ----------------------------------------------------------------------
-
-my @default_options;
-my $cmd = quote_options($print_defaults,$opt->{'defaults-file'},
- "mysqld","mariadb","mysql_install_db","server","client-server");
-open(PIPE, "$cmd |") or error($opt,"can't run $cmd: $!");
-while ( <PIPE> )
-{
- chomp;
- next unless /\S/;
- push(@default_options, $_);
-}
-close PIPE;
-$opt = {}; # Reset the arguments FIXME ?
-parse_arguments($opt, @default_options);
-parse_arguments($opt, 'PICK-ARGS-FROM-ARGV', @ARGV);
-
-# ----------------------------------------------------------------------
-# Configure paths to support files
-# ----------------------------------------------------------------------
-
-# FIXME $extra_bindir is not used
-my ($bindir,$extra_bindir,$mysqld,$srcpkgdatadir,$buildpkgdatadir,$mysqld_opt,
- $scriptdir);
-
-if ( $opt->{srcdir} )
-{
- $opt->{basedir} = $opt->{builddir};
- $bindir = "$opt->{basedir}/client";
- $extra_bindir = "$opt->{basedir}/extra";
- $mysqld = "$opt->{basedir}/sql/mysqld";
- $mysqld_opt = "--language=$opt->{srcdir}/sql/share/english";
- $srcpkgdatadir = "$opt->{srcdir}/scripts";
- $buildpkgdatadir = "$opt->{builddir}/scripts";
- $scriptdir = "$opt->{srcdir}/scripts";
-}
-elsif ( $opt->{basedir} )
-{
- $bindir = "$opt->{basedir}/bin";
- $extra_bindir = $bindir;
- $mysqld = find_in_basedir($opt,"file",["mysqld-nt","mysqld"],
- "libexec","sbin","bin") || # ,"sql"
- find_in_basedir($opt,"file","mysqld-nt",
- "bin"); # ,"sql"
- $srcpkgdatadir = find_in_basedir($opt,"dir","fill_help_tables.sql",
- "share","share/mysql"); # ,"scripts"
- $buildpkgdir = $srcpkgdatadir;
- $scriptdir = "$opt->{basedir}/scripts";
-}
-else
-{
- $opt->{basedir} = '@prefix@';
- $bindir = '@bindir@';
- $extra_bindir = $bindir;
- $mysqld = '@libexecdir@/mysqld';
- $srcpkgdatadir = '@pkgdatadir@';
- $buildpkgdatadir = '@pkgdatadir@';
- $scriptdir = '@scriptdir@';
-}
-
-unless ( $opt->{ldata} )
-{
- $opt->{ldata} = '@localstatedir@';
-}
-
-
-# ----------------------------------------------------------------------
-# Set up paths to SQL scripts required for bootstrap
-# ----------------------------------------------------------------------
-
-my $fill_help_tables = "$srcpkgdatadir/fill_help_tables.sql";
-my $create_system_tables = "$srcpkgdatadir/mysql_system_tables.sql";
-my $fill_system_tables = "$srcpkgdatadir/mysql_system_tables_data.sql";
-my $maria_add_gis_sp = "$buildpkgdatadir/maria_add_gis_sp_bootstrap.sql";
-
-foreach my $f ( $fill_help_tables,$create_system_tables,$fill_system_tables,$maria_add_gis_sp )
-{
- -f $f or cannot_find_file($f);
-}
-
--x $mysqld or -f "$mysqld.exe" or cannot_find_file($mysqld);
-# Try to determine the hostname
-my $hostname = hostname();
-
-# ----------------------------------------------------------------------
-# Check if hostname is valid
-# ----------------------------------------------------------------------
-
-my $resolved;
-if ( !$opt->{'cross-bootstrap'} and !$opt->{rpm} and !$opt->{force} )
-{
- my $resolveip = "$extra_bindir/resolveip";
-
- $resolved = `$resolveip $hostname 2>&1`;
- if ( $? != 0 )
- {
- $resolved=`$resolveip localhost 2>&1`;
- if ( $? != 0 )
- {
- error($opt,
- "Neither host '$hostname' nor 'localhost' could be looked up with",
- "$resolveip",
- "Please configure the 'hostname' command to return a correct",
- "hostname.",
- "If you want to solve this at a later stage, restart this script",
- "with the --force option");
- }
- warning($opt,
- "The host '$hostname' could not be looked up with $resolveip.",
- "This probably means that your libc libraries are not 100 % compatible",
- "with this binary MySQL version. The MySQL daemon, mysqld, should work",
- "normally with the exception that host name resolving will not work.",
- "This means that you should use IP addresses instead of hostnames",
- "when specifying MySQL privileges !");
- }
-}
-
-# FIXME what does this really mean....
-if ( $opt->{'skip-name-resolve'} and $resolved and $resolved =~ /\s/ )
-{
- $hostname = (split(' ', $resolved))[5];
-}
-
-# ----------------------------------------------------------------------
-# Create database directories mysql & test
-# ----------------------------------------------------------------------
-
-foreach my $dir ( $opt->{ldata}, "$opt->{ldata}/mysql", "$opt->{ldata}/test" )
-{
- # FIXME not really the same as original "mkdir -p", but ok?
- mkdir($dir, 0700) unless -d $dir;
- chown($opt->{user}, $dir) if -w "/" and !$opt->{user};
-}
-
-push(@args, "--user=$opt->{user}") if $opt->{user};
-
-# ----------------------------------------------------------------------
-# Configure mysqld command line
-# ----------------------------------------------------------------------
-
-# FIXME use --init-file instead of --bootstrap ?!
-
-my $mysqld_bootstrap = $ENV{MYSQLD_BOOTSTRAP} || $mysqld;
-my $mysqld_install_cmd_line = quote_options($mysqld_bootstrap,
- $opt->{'defaults-file'},
- $mysqld_opt,
- "--bootstrap",
- "--basedir=$opt->{basedir}",
- "--datadir=$opt->{ldata}",
- "--log-warnings=0",
- "--max_allowed_packet=8M",
- "--default-storage-engine=MyISAM",
- "--net_buffer_length=16K",
- "--enforce-storage-engine=\"\"",
- @args,
- );
-
-# ----------------------------------------------------------------------
-# Create the system and help tables by passing them to "mysqld --bootstrap"
-# ----------------------------------------------------------------------
-
-report_verbose_wait($opt,"Installing MySQL system tables...");
-
-open(SQL, $create_system_tables)
- or error($opt,"can't open $create_system_tables for reading: $!");
-open(SQL2, $fill_system_tables)
- or error($opt,"can't open $fill_system_tables for reading: $!");
-# FIXME > /dev/null ?
-if ( open(PIPE, "| $mysqld_install_cmd_line") )
-{
- print PIPE "use mysql;\n";
- while ( <SQL> )
- {
- # When doing a "cross bootstrap" install, no reference to the current
- # host should be added to the system tables. So we filter out any
- # lines which contain the current host name.
- next if $opt->{'cross-bootstrap'} and /\@current_hostname/;
-
- print PIPE $_;
- }
- while ( <SQL2> )
- {
- # TODO: make it similar to the above condition when we're sure
- # @@hostname returns a fqdn
- # When doing a "cross bootstrap" install, no reference to the current
- # host should be added to the system tables. So we filter out any
- # lines which contain the current host name.
- next if /\@current_hostname/;
-
- print PIPE $_;
- }
- close PIPE;
- close SQL;
- close SQL2;
-
- report_verbose($opt,"OK");
-
- # ----------------------------------------------------------------------
- # Pipe fill_help_tables.sql to "mysqld --bootstrap"
- # ----------------------------------------------------------------------
-
- report_verbose_wait($opt,"Filling help tables...");
- open(SQL, $fill_help_tables)
- or error($opt,"can't open $fill_help_tables for reading: $!");
- # FIXME > /dev/null ?
- if ( open(PIPE, "| $mysqld_install_cmd_line") )
- {
- print PIPE "use mysql;\n";
- while ( <SQL> )
- {
- print PIPE $_;
- }
- close PIPE;
- close SQL;
-
- report_verbose($opt,"OK");
- }
- else
- {
- warning($opt,"HELP FILES ARE NOT COMPLETELY INSTALLED!",
- "The \"HELP\" command might not work properly");
- }
-
- # ----------------------------------------------------------------------
- # Pipe maria_add_gis_sp.sql to "mysqld --bootstrap"
- # ----------------------------------------------------------------------
-
- report_verbose_wait($opt,"Creating OpenGIS required SP-s...");
- open(SQL, $maria_add_gis_sp)
- or error($opt,"can't open $maria_add_gis_sp for reading: $!");
- # FIXME > /dev/null ?
- if ( open(PIPE, "| $mysqld_install_cmd_line") )
- {
- print PIPE "use mysql;\n";
- while ( <SQL> )
- {
- print PIPE $_;
- }
- close PIPE;
- close SQL;
-
- report_verbose($opt,"OK");
- }
- else
- {
- warning($opt,"OPENGIS REQUIRED SP-S WERE NOT COMPLETELY INSTALLED!",
- "GIS extentions might not work properly");
- }
-
- report_verbose($opt,"To start mysqld at boot time you have to copy",
- "support-files/mysql.server to the right place " .
- "for your system");
-
- if ( !$opt->{'cross-bootstrap'} )
- {
- # This is not a true installation on a running system. The end user must
- # set a password after installing the data files on the real host system.
- # At this point, there is no end user, so it does not make sense to print
- # this reminder.
- report($opt,
- "PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !",
- "To do so, start the server, then issue the following commands:",
- "",
- " $bindir/mysqladmin -u root password 'new-password'",
- " $bindir/mysqladmin -u root -h $hostname password 'new-password'",
- "",
- "Alternatively you can run:",
- "",
- " $bindir/mysql_secure_installation",
- "",
- "which will also give you the option of removing the test",
- "databases and anonymous user created by default. This is",
- "strongly recommended for production servers.",
- "",
- "See the manual for more instructions.");
-
- if ( !$opt->{rpm} )
- {
- report($opt,
- "You can start the MySQL daemon with:",
- "",
- " cd " . '@prefix@' . " ; $bindir/mysqld_safe &",
- "",
- "You can test the MySQL daemon with mysql-test-run.pl",
- "",
- " cd mysql-test ; perl mysql-test-run.pl");
- }
- report($opt,
- "Please report any problems at http://bugs.mysql.com/",
- "",
- "The latest information about MySQL is available on the web at",
- "",
- " http://www.mysql.com",
- "",
- "Support MySQL by buying support/licenses at http://shop.mysql.com");
- }
- exit 0
-}
-else
-{
- error($opt,
- "Installation of system tables failed!",
- "",
- "Examine the logs in $opt->{ldata} for more information.",
- "You can try to start the mysqld daemon with:",
- "$mysqld --skip-grant &",
- "and use the command line tool",
- "$bindir/mysql to connect to the mysql",
- "database and look at the grant tables:",
- "",
- "shell> $bindir/mysql -u root mysql",
- "mysql> show tables;",
- "",
- "Try 'mysqld --help' if you have problems with paths. Using --log",
- "gives you a log in $opt->{ldata} that may be helpful.",
- "",
- "The latest information about MySQL is available on the web at",
- "http://www.mysql.com",
- "Please consult the MySQL manual section: 'Problems running mysql_install_db',",
- "and the manual section that describes problems on your OS.",
- "Another information source is the MySQL email archive.",
- "",
- "Please check all of the above before submitting a bug report",
- "at http://bugs.mysql.com/")
-}
-
-##############################################################################
-#
-# Misc
-#
-##############################################################################
-
-sub report_verbose
-{
- my $opt = shift;
- my $text = shift;
-
- report_verbose_wait($opt, $text, @_);
- print "\n\n";
-}
-
-sub report_verbose_wait
-{
- my $opt = shift;
- my $text = shift;
-
- if ( $opt->{verbose} or (!$opt->{rpm} and !$opt->{'cross-bootstrap'}) )
- {
- print "$text";
- map {print "\n$_"} @_;
- }
-}
-
-sub report
-{
- my $opt = shift;
- my $text = shift;
-
- print "$text\n";
- map {print "$_\n"} @_;
- print "\n";
-}
-
-sub error
-{
- my $opt = shift;
- my $text = shift;
-
- print "FATAL ERROR: $text\n";
- map {print "$_\n"} @_;
- exit 1;
-}
-
-sub warning
-{
- my $opt = shift;
- my $text = shift;
-
- print "WARNING: $text\n";
- map {print "$_\n"} @_;
- print "\n";
-}
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index 5afeb6a6f47..8d706e4c5ad 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -37,9 +37,9 @@ force=0
in_rpm=0
ip_only=0
cross_bootstrap=0
-install_params=""
auth_root_authentication_method=normal
auth_root_socket_user='root'
+skip_test_db=0
usage()
{
@@ -80,11 +80,10 @@ Usage: $0 [OPTIONS]
--defaults-file=path Read only this configuration file.
--rpm For internal use. This option is used by RPM files
during the MariaDB installation process.
- --skip-auth-anonymous-user
- Do not install an unprivileged anonymous user.
--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.
+ --skip-test-db Don't install a test database.
--srcdir=path The path to the MariaDB source directory. This option
uses the compiled binaries and support files within the
source tree, useful for if you don't want to install
@@ -168,9 +167,6 @@ parse_arguments()
#
# --windows is a deprecated alias
cross_bootstrap=1 ;;
- --skip-auth-anonymous-user)
- install_params="$install_params
-SET @skip_auth_anonymous=1;" ;;
--auth-root-authentication-method=normal)
auth_root_authentication_method=normal ;;
--auth-root-authentication-method=socket)
@@ -179,6 +175,7 @@ SET @skip_auth_anonymous=1;" ;;
usage ;;
--auth-root-socket-user=*)
auth_root_socket_user="$(parse_arg "$arg")" ;;
+ --skip-test-db) skip_test_db=1 ;;
*)
if test -n "$pick_args"
@@ -353,8 +350,9 @@ create_system_tables="$srcpkgdatadir/mysql_system_tables.sql"
create_system_tables2="$srcpkgdatadir/mysql_performance_tables.sql"
fill_system_tables="$srcpkgdatadir/mysql_system_tables_data.sql"
maria_add_gis_sp="$buildpkgdatadir/maria_add_gis_sp_bootstrap.sql"
+mysql_test_db="$srcpkgdatadir/mysql_test_db.sql"
-for f in "$fill_help_tables" "$create_system_tables" "$create_system_tables2" "$fill_system_tables" "$maria_add_gis_sp"
+for f in "$fill_help_tables" "$create_system_tables" "$create_system_tables2" "$fill_system_tables" "$maria_add_gis_sp" "$mysql_test_db"
do
if test ! -f "$f"
then
@@ -418,7 +416,7 @@ then
fi
# Create database directories
-for dir in "$ldata" "$ldata/mysql" "$ldata/test"
+for dir in "$ldata" "$ldata/mysql"
do
if test ! -d "$dir"
then
@@ -467,20 +465,31 @@ mysqld_install_cmd_line()
--net_buffer_length=16K
}
+cat_sql()
+{
+ echo "use mysql;"
+
+ case "$auth_root_authentication_method" in
+ normal)
+ echo "SET @skip_auth_root_nopasswd=NULL;"
+ echo "SET @auth_root_socket=NULL;"
+ ;;
+ socket)
+ echo "SET @skip_auth_root_nopasswd=1;"
+ echo "SET @auth_root_socket='$auth_root_socket_user';"
+ ;;
+ esac
+
+ cat "$create_system_tables" "$create_system_tables2" "$fill_system_tables" "$fill_help_tables" "$maria_add_gis_sp"
+ if test "$skip_test_db" -eq 0
+ then
+ cat "$mysql_test_db"
+ fi
+}
# Create the system and help tables by passing them to "mysqld --bootstrap"
s_echo "Installing MariaDB/MySQL system tables in '$ldata' ..."
-case "$auth_root_authentication_method" in
- normal)
- install_params="$install_params
-SET @skip_auth_root_nopasswd=NULL;
-SET @auth_root_socket=NULL;" ;;
- socket)
- install_params="$install_params
-SET @skip_auth_root_nopasswd=1;
-SET @auth_root_socket='$auth_root_socket_user';" ;;
-esac
-if { echo "use mysql;$install_params"; cat "$create_system_tables" "$create_system_tables2" "$fill_system_tables" "$fill_help_tables" "$maria_add_gis_sp"; } | eval "$filter_cmd_line" | mysqld_install_cmd_line > /dev/null
+if cat_sql | eval "$filter_cmd_line" | mysqld_install_cmd_line > /dev/null
then
s_echo "OK"
else
diff --git a/scripts/mysql_system_tables_data.sql b/scripts/mysql_system_tables_data.sql
index 4821b18bcbf..0fbbfe4701f 100644
--- a/scripts/mysql_system_tables_data.sql
+++ b/scripts/mysql_system_tables_data.sql
@@ -26,21 +26,10 @@
-- a plain character
SELECT LOWER( REPLACE((SELECT REPLACE(@@hostname,'_','\_')),'%','\%') )INTO @current_hostname;
-
--- Fill "db" table with default grants for anyone to
--- access database 'test' and 'test_%' if "db" table didn't exist
-CREATE TEMPORARY TABLE tmp_db LIKE db;
-INSERT INTO tmp_db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y','Y');
-INSERT INTO tmp_db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y','Y');
-INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0;
-DROP TABLE tmp_db;
-
-
-- Fill "user" table with default users allowing root access
-- from local machine if "user" table didn't exist before
CREATE TEMPORARY TABLE tmp_user_nopasswd LIKE user;
CREATE TEMPORARY TABLE tmp_user_socket LIKE user;
-CREATE TEMPORARY TABLE tmp_user_anonymous LIKE user;
-- Classic passwordless root account.
INSERT INTO tmp_user_nopasswd VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N', 'N','', 0);
REPLACE INTO tmp_user_nopasswd SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N','',0 FROM dual WHERE @current_hostname != 'localhost';
@@ -48,14 +37,10 @@ REPLACE INTO tmp_user_nopasswd VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y'
REPLACE INTO tmp_user_nopasswd VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','','N','N', '', 0);
-- More secure root account using unix sucket auth.
INSERT INTO tmp_user_socket VALUES ('localhost',IFNULL(@auth_root_socket, 'root'),'','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'unix_socket','','N', 'N','', 0);
--- Anonymous user with no privileges.
-INSERT INTO tmp_user_anonymous (host,user) VALUES ('localhost','');
-INSERT INTO tmp_user_anonymous (host,user) SELECT @current_hostname,'' FROM dual WHERE @current_hostname != 'localhost';
INSERT INTO user SELECT * FROM tmp_user_nopasswd WHERE @had_user_table=0 AND @skip_auth_root_nopasswd IS NULL;
INSERT INTO user SELECT * FROM tmp_user_socket WHERE @had_user_table=0 AND @auth_root_socket IS NOT NULL;
-INSERT INTO user SELECT * FROM tmp_user_anonymous WHERE @had_user_table=0 AND @skip_auth_anonymous IS NULL;
-DROP TABLE tmp_user_nopasswd, tmp_user_socket, tmp_user_anonymous;
+DROP TABLE tmp_user_nopasswd, tmp_user_socket;
CREATE TEMPORARY TABLE tmp_proxies_priv LIKE proxies_priv;
INSERT INTO tmp_proxies_priv VALUES ('localhost', 'root', '', '', TRUE, '', now());
diff --git a/scripts/mysql_test_db.sql b/scripts/mysql_test_db.sql
new file mode 100644
index 00000000000..c1bb3661ec3
--- /dev/null
+++ b/scripts/mysql_test_db.sql
@@ -0,0 +1,31 @@
+-- Copyright (c) 2018 MariaDB Foundation
+--
+-- This program is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation; version 2 of the License.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program; if not, write to the Free Software
+-- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+CREATE DATABASE IF NOT EXISTS test CHARACTER SET latin1 COLLATE latin1_swedish_ci;
+
+-- Fill "db" table with default grants for anyone to
+-- access database 'test' and 'test_%' if "db" table didn't exist
+CREATE TEMPORARY TABLE tmp_db LIKE db;
+INSERT INTO tmp_db VALUES ('%','test','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y','Y');
+INSERT INTO tmp_db VALUES ('%','test\_%','','Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','N','N','Y','Y','Y');
+INSERT INTO db SELECT * FROM tmp_db WHERE @had_db_table=0;
+DROP TABLE tmp_db;
+
+-- Anonymous user with no privileges.
+CREATE TEMPORARY TABLE tmp_user_anonymous LIKE user;
+INSERT INTO tmp_user_anonymous (host,user) VALUES ('localhost','');
+INSERT INTO tmp_user_anonymous (host,user) SELECT @current_hostname,'' FROM dual WHERE @current_hostname != 'localhost';
+INSERT INTO user SELECT * FROM tmp_user_anonymous WHERE @had_user_table=0;
+DROP TABLE tmp_user_anonymous;
diff --git a/scripts/wsrep_sst_xtrabackup.sh b/scripts/wsrep_sst_xtrabackup.sh
index 3a30f5898db..41ed4485de5 100644
--- a/scripts/wsrep_sst_xtrabackup.sh
+++ b/scripts/wsrep_sst_xtrabackup.sh
@@ -399,7 +399,6 @@ if [[ ! ${WSREP_SST_OPT_ROLE} == 'joiner' && ! ${WSREP_SST_OPT_ROLE} == 'donor'
fi
read_cnf
-setup_ports
get_stream
get_transfer