mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
706 lines
22 KiB
Bash
706 lines
22 KiB
Bash
#!/bin/sh
|
|
# Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
|
# Copyright (c) 2009, 2013, Monty Program Ab
|
|
#
|
|
# 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-1335 USA
|
|
|
|
# This scripts creates the MariaDB Server system tables
|
|
#
|
|
# All unrecognized arguments to this script are passed to mariadbd.
|
|
|
|
basedir=""
|
|
builddir=""
|
|
ldata="@localstatedir@"
|
|
langdir=""
|
|
srcdir=""
|
|
|
|
args=""
|
|
defaults=""
|
|
defaults_group_suffix=""
|
|
mysqld_opt=""
|
|
user=""
|
|
group=""
|
|
silent_startup="--silent-startup"
|
|
log_error=""
|
|
|
|
force=0
|
|
in_rpm=0
|
|
ip_only=0
|
|
cross_bootstrap=0
|
|
do_resolve=0
|
|
auth_root_authentication_method=socket
|
|
auth_root_socket_user=""
|
|
skip_test_db=0
|
|
extra_file=""
|
|
|
|
dirname0=`dirname $0 2>/dev/null`
|
|
dirname0=`dirname $dirname0 2>/dev/null`
|
|
|
|
case "$0" in
|
|
*mysql_install_db)
|
|
echo "$0: Deprecated program name. It will be removed in a future release, use 'mariadb-install-db' instead" 1>&2
|
|
;;
|
|
esac
|
|
|
|
usage()
|
|
{
|
|
cat <<EOF
|
|
Usage: $0 [OPTIONS]
|
|
--auth-root-authentication-method=normal|socket
|
|
Chooses the authentication method for the created
|
|
initial root user. The historical behavior is 'normal'
|
|
to creates a root user that can login without password,
|
|
which can be insecure. The default behavior 'socket'
|
|
sets an invalid root password but allows the system root
|
|
user to login as MariaDB root without a password.
|
|
--auth-root-socket-user=user
|
|
Used with --auth-root-authentication-method=socket. It
|
|
specifies the name of the second MariaDB root account,
|
|
as well as of the system account allowed to access it.
|
|
Defaults to the value of --user.
|
|
--basedir=path The path to the MariaDB 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 MariaDB system
|
|
tables on a different host than the target.
|
|
--datadir=path The path to the MariaDB data directory.
|
|
--no-defaults Don't read default options from any option file.
|
|
--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.
|
|
--defaults-group-suffix=name
|
|
In addition to the given groups, read also groups with
|
|
this suffix
|
|
--force Causes mariadb-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 MariaDB data directory. Same as
|
|
--datadir.
|
|
--rpm For internal use. This option is used by RPM files
|
|
during the MariaDB 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.
|
|
--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
|
|
MariaDB yet and just want to create the system tables.
|
|
--user=user_name The login username to use for running mariadbd. Files
|
|
and directories created by mariadbd will be owned by this
|
|
user. You must be root to use this option. By default
|
|
mariadbd runs using your current login name and files and
|
|
directories that it creates will be owned by you.
|
|
--group=group_name The login group to use for running mariadbd. Files and
|
|
directories created by mariadbd will be owned by this
|
|
group. You must be root to use this option. By default
|
|
mariadbd runs using your current group and files and
|
|
directories that it creates will be owned by you.
|
|
--extra-file=file Add user defined SQL file, to be executed following
|
|
regular database initialization.
|
|
|
|
All other options are passed to the mariadbd program
|
|
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
s_echo()
|
|
{
|
|
if test "$in_rpm" -eq 0 -a "$cross_bootstrap" -eq 0
|
|
then
|
|
echo "$1"
|
|
fi
|
|
}
|
|
|
|
link_to_help()
|
|
{
|
|
echo
|
|
echo "The latest information about mariadb-install-db is available at"
|
|
echo "https://mariadb.com/kb/en/installing-system-tables-mysql_install_db"
|
|
}
|
|
|
|
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.
|
|
pick_args=
|
|
if test "$1" = PICK-ARGS-FROM-ARGV
|
|
then
|
|
pick_args=1
|
|
shift
|
|
fi
|
|
|
|
for arg
|
|
do
|
|
case "$arg" in
|
|
--force) force=1 ;;
|
|
--basedir=*) basedir=`parse_arg "$arg"` ;;
|
|
--builddir=*) builddir=`parse_arg "$arg"` ;;
|
|
--srcdir=*) srcdir=`parse_arg "$arg"` ;;
|
|
--ldata=*|--datadir=*|--data=*) ldata=`parse_arg "$arg"` ;;
|
|
--log[-_]error=*)
|
|
# Keep in the arguments passed to the server
|
|
args="$args $arg"
|
|
log_error=`parse_arg "$arg"` ;;
|
|
# Note that the user will be passed to mariadbd so that it runs
|
|
# as 'user' (crucial e.g. if log-bin=/some_other_path/
|
|
# where a chown of datadir won't help)
|
|
--user=*) user=`parse_arg "$arg"` ;;
|
|
--group=*) group=`parse_arg "$arg"` ;;
|
|
--skip-name-resolve) ip_only=1 ;;
|
|
--verbose) verbose=1 ; silent_startup="" ;;
|
|
--rpm) in_rpm=1 ;;
|
|
--help) usage ;;
|
|
--no-defaults|--defaults-file=*|--defaults-extra-file=*)
|
|
defaults="$arg" ;;
|
|
--defaults-group-suffix=*)
|
|
defaults_group_suffix="$arg" ;;
|
|
|
|
--cross-bootstrap|--windows)
|
|
# Used when building the MariaDB 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=1 ;;
|
|
--auth-root-authentication-method=normal)
|
|
auth_root_authentication_method=normal ;;
|
|
--auth-root-authentication-method=socket)
|
|
auth_root_authentication_method=socket ;;
|
|
--auth-root-authentication-method=*)
|
|
usage ;;
|
|
--auth-root-socket-user=*)
|
|
auth_root_socket_user="$(parse_arg "$arg")" ;;
|
|
--skip-test-db) skip_test_db=1 ;;
|
|
--extra-file=*)
|
|
extra_file="$(parse_arg "$arg")" ;;
|
|
|
|
*)
|
|
if test -n "$pick_args"
|
|
then
|
|
# This sed command 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 ($basedir, $ldata, etc.)
|
|
#args="$args "`echo "$arg" | sed -e 's,\([^a-zA-Z0-9_.-]\),\\\\\1,g'`
|
|
args="$args $arg"
|
|
fi
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
# 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_dirs()
|
|
{
|
|
case "$1" in
|
|
--dir)
|
|
return_dir=1; shift
|
|
;;
|
|
esac
|
|
|
|
file=$1; shift
|
|
|
|
for dir in "$@"
|
|
do
|
|
if test -f "$dir/$file"
|
|
then
|
|
if test -n "$return_dir"
|
|
then
|
|
echo "$dir"
|
|
else
|
|
echo "$dir/$file"
|
|
fi
|
|
break
|
|
fi
|
|
done
|
|
}
|
|
|
|
cannot_find_file()
|
|
{
|
|
echo
|
|
echo "FATAL ERROR: Could not find $1"
|
|
|
|
shift
|
|
if test $# -ne 0
|
|
then
|
|
echo
|
|
echo "The following directories were searched:"
|
|
echo
|
|
for dir in "$@"
|
|
do
|
|
echo " $dir"
|
|
done
|
|
fi
|
|
|
|
echo
|
|
echo "If you compiled from source, you need to either run 'make install' to"
|
|
echo "copy the software into the correct location ready for operation."
|
|
echo "If you don't want to do a full install, you can use the --srcdir"
|
|
echo "option to only install the mysql database and privilege tables."
|
|
echo
|
|
echo "If you are using a binary release, you must either be at the top"
|
|
echo "level of the extracted archive, or pass the --basedir option"
|
|
echo "pointing to that location."
|
|
link_to_help
|
|
}
|
|
|
|
# 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 "$@"
|
|
|
|
#
|
|
# 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.
|
|
#
|
|
if test -n "$srcdir" && test -n "$basedir"
|
|
then
|
|
echo "ERROR: Specify either --basedir or --srcdir, not both."
|
|
link_to_help
|
|
exit 1
|
|
fi
|
|
if test -n "$srcdir"
|
|
then
|
|
# In an out-of-source build, builddir is not srcdir. Try to guess where
|
|
# builddir is by looking for my_print_defaults.
|
|
if test -z "$builddir"
|
|
then
|
|
if test -x "$dirname0/extra/my_print_defaults"
|
|
then
|
|
builddir="$dirname0"
|
|
else
|
|
builddir="$srcdir"
|
|
fi
|
|
fi
|
|
print_defaults="$builddir/extra/my_print_defaults"
|
|
elif test -n "$basedir"
|
|
then
|
|
print_defaults=`find_in_dirs my_print_defaults $basedir/bin $basedir/extra`
|
|
if test -z "$print_defaults"
|
|
then
|
|
cannot_find_file my_print_defaults $basedir/bin $basedir/extra
|
|
exit 1
|
|
fi
|
|
elif test -n "$dirname0" -a -x "$dirname0/@bindir@/my_print_defaults"
|
|
then
|
|
print_defaults="$dirname0/@bindir@/my_print_defaults"
|
|
elif test -x "./extra/my_print_defaults"
|
|
then
|
|
srcdir="."
|
|
builddir="."
|
|
print_defaults="./extra/my_print_defaults"
|
|
else
|
|
print_defaults="@bindir@/my_print_defaults"
|
|
fi
|
|
|
|
if test ! -x "$print_defaults"
|
|
then
|
|
cannot_find_file "$print_defaults"
|
|
exit 1
|
|
fi
|
|
|
|
# Now we can get arguments from the groups [mariadbd] and [mysql_install_db]
|
|
# in the my.cfg file, then re-run to merge with command line arguments.
|
|
parse_arguments `"$print_defaults" $defaults $defaults_group_suffix --mariadbd mysql_install_db mariadb-install-db`
|
|
|
|
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
|
|
|
rel_mysqld="$dirname0/@INSTALL_SBINDIR@/mariadbd"
|
|
|
|
if test "$cross_bootstrap" -eq 0 -a "$in_rpm" -eq 0 -a "$force" -eq 0
|
|
then
|
|
do_resolve=1
|
|
fi
|
|
|
|
# Configure paths to support files
|
|
if test -n "$srcdir"
|
|
then
|
|
basedir="$builddir"
|
|
bindir="$basedir/client"
|
|
resolveip="$basedir/extra/resolveip"
|
|
mysqld="$basedir/sql/mariadbd"
|
|
langdir="$basedir/sql/share/english"
|
|
srcpkgdatadir="$srcdir/scripts"
|
|
buildpkgdatadir="$builddir/scripts"
|
|
plugindir="$builddir/plugin/auth_socket"
|
|
pamtooldir="$builddir/plugin/auth_pam"
|
|
elif test -n "$basedir"
|
|
then
|
|
bindir="$basedir/@INSTALL_BINDIR@"
|
|
resolveip="$bindir/resolveip"
|
|
mysqld="$basedir/@INSTALL_SBINDIR@/mariadbd"
|
|
langdir="$basedir/@INSTALL_MYSQLSHAREDIR@/english"
|
|
srcpkgdatadir="$basedir/@INSTALL_MYSQLSHAREDIR@"
|
|
buildpkgdatadir="$basedir/@INSTALL_MYSQLSHAREDIR@"
|
|
plugindir="$basedir/@INSTALL_PLUGINDIR@"
|
|
pamtooldir=$plugindir
|
|
# relative from where the script was run for a relocatable install
|
|
elif test -n "$dirname0" -a -x "$rel_mysqld" -a ! "$rel_mysqld" -ef "@sbindir@/mariadbd"
|
|
then
|
|
basedir="$dirname0"
|
|
bindir="$basedir/@INSTALL_BINDIR@"
|
|
resolveip="$bindir/resolveip"
|
|
mysqld="$rel_mysqld"
|
|
srcpkgdatadir="$basedir/@INSTALL_MYSQLSHAREDIR@"
|
|
buildpkgdatadir="$basedir/@INSTALL_MYSQLSHAREDIR@"
|
|
plugindir="$basedir/@INSTALL_PLUGINDIR@"
|
|
pamtooldir=$plugindir
|
|
else
|
|
basedir="@prefix@"
|
|
bindir="@bindir@"
|
|
resolveip="$bindir/resolveip"
|
|
mysqld="@sbindir@/mariadbd"
|
|
srcpkgdatadir="@pkgdatadir@"
|
|
buildpkgdatadir="@pkgdatadir@"
|
|
plugindir="@pkgplugindir@"
|
|
pamtooldir="@pkgplugindir@"
|
|
fi
|
|
|
|
# Set up paths to SQL scripts required for bootstrap
|
|
fill_help_tables="$srcpkgdatadir/fill_help_tables.sql"
|
|
create_system_tables="$srcpkgdatadir/mariadb_system_tables.sql"
|
|
create_system_tables2="$srcpkgdatadir/mariadb_performance_tables.sql"
|
|
fill_system_tables="$srcpkgdatadir/mariadb_system_tables_data.sql"
|
|
maria_add_gis_sp="$buildpkgdatadir/maria_add_gis_sp_bootstrap.sql"
|
|
mysql_test_db="$srcpkgdatadir/mariadb_test_db.sql"
|
|
mysql_sys_schema="$buildpkgdatadir/mariadb_sys_schema.sql"
|
|
|
|
for f in "$fill_help_tables" "$create_system_tables" "$create_system_tables2" "$fill_system_tables" "$maria_add_gis_sp" "$mysql_test_db" "$mysql_sys_schema"
|
|
do
|
|
if test ! -f "$f"
|
|
then
|
|
cannot_find_file "$f"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Verify extra file exists if it's not null
|
|
if test ! -z "$extra_file" -a ! -f "$extra_file"
|
|
then
|
|
cannot_find_file "$extra_file"
|
|
exit 1
|
|
fi
|
|
|
|
if test ! -x "$mysqld"
|
|
then
|
|
cannot_find_file "$mysqld"
|
|
exit 1
|
|
fi
|
|
|
|
if test -n "$langdir"
|
|
then
|
|
if test ! -f "$langdir/errmsg.sys"
|
|
then
|
|
cannot_find_file "$langdir/errmsg.sys"
|
|
exit 1
|
|
fi
|
|
mysqld_opt="--lc-messages-dir=$langdir/.."
|
|
else
|
|
mysqld_opt="--lc-messages=en_US"
|
|
fi
|
|
|
|
|
|
# Try to determine the hostname
|
|
hostname=`@HOSTNAME@`
|
|
|
|
# Check if hostname is valid
|
|
if test "$do_resolve" -eq 1
|
|
then
|
|
resolved=`"$resolveip" $hostname 2>&1`
|
|
if test $? -ne 0
|
|
then
|
|
resolved=`"$resolveip" localhost 2>&1`
|
|
if test $? -ne 0
|
|
then
|
|
echo "Neither host '$hostname' nor 'localhost' could be looked up with"
|
|
echo "'$resolveip'"
|
|
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"
|
|
link_to_help
|
|
exit 1
|
|
fi
|
|
echo "WARNING: The host '$hostname' could not be looked up with $resolveip."
|
|
echo "This probably means that your libc libraries are not 100 % compatible"
|
|
echo "with this binary MariaDB version. The MariaDB daemon, mariadbd, should work"
|
|
echo "normally with the exception that host name resolving will not work."
|
|
echo "This means that you should use IP addresses instead of hostnames"
|
|
echo "when specifying MariaDB privileges !"
|
|
fi
|
|
fi
|
|
|
|
if test "$do_resolve" -eq 1 -a "$ip_only" -eq 1
|
|
then
|
|
hostname=`echo "$resolved" | while read a; do echo ${a##* }; done`
|
|
fi
|
|
|
|
# Create database directories
|
|
for dir in "$ldata"
|
|
do
|
|
if test ! -d "$dir"
|
|
then
|
|
if ! `mkdir -p "$dir"`
|
|
then
|
|
echo "Fatal error Can't create database directory '$dir'"
|
|
link_to_help
|
|
exit 1
|
|
fi
|
|
chmod 700 "$dir"
|
|
fi
|
|
if test -n "$user"
|
|
then
|
|
if test -z "$group"
|
|
then
|
|
chown $user $dir
|
|
else
|
|
chown $user:$group $dir
|
|
fi
|
|
if test $? -ne 0
|
|
then
|
|
echo "Cannot change ownership of the database directories to the '$user'"
|
|
echo "user. Check that you have the necessary permissions and try again."
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if test -n "$user"
|
|
then
|
|
if test -z "$srcdir" -a "$in_rpm" -eq 0 -a -d "$pamtooldir/auth_pam_tool_dir"
|
|
then
|
|
chown 0 "$pamtooldir/auth_pam_tool_dir/auth_pam_tool" && \
|
|
chmod 04755 "$pamtooldir/auth_pam_tool_dir/auth_pam_tool"
|
|
if test $? -ne 0
|
|
then
|
|
echo "Couldn't set an owner to '$pamtooldir/auth_pam_tool_dir/auth_pam_tool'."
|
|
echo "It must be root, the PAM authentication plugin doesn't work otherwise.."
|
|
echo
|
|
fi
|
|
chown $user "$pamtooldir/auth_pam_tool_dir" && \
|
|
chmod 0700 "$pamtooldir/auth_pam_tool_dir"
|
|
if test $? -ne 0
|
|
then
|
|
echo "Cannot change ownership of the '$pamtooldir/auth_pam_tool_dir' directory"
|
|
echo "to the '$user' user. Check that you have the necessary permissions and try again."
|
|
echo
|
|
fi
|
|
fi
|
|
args="$args --user=$user"
|
|
fi
|
|
|
|
#To be enabled if/when we enable --group as an option to mariadbd
|
|
#if test -n "$group"
|
|
#then
|
|
# args="$args --group=$group"
|
|
#fi
|
|
|
|
if test -f "$ldata/mysql/user.frm"
|
|
then
|
|
echo "mysql.user table already exists!"
|
|
echo "Run mariadb-upgrade, not mariadb-install-db"
|
|
exit 0
|
|
fi
|
|
|
|
# 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.
|
|
if test $cross_bootstrap -eq 1
|
|
then
|
|
filter_cmd_line="sed -e '/@current_hostname/d'"
|
|
else
|
|
filter_cmd_line="cat"
|
|
fi
|
|
|
|
# Disable log error if the user don't have right to write/create the file
|
|
# This is common when a user tries to install a personal mariadbd server and
|
|
# the global config in /etc is using --log-error.
|
|
# The server will internally change log-error to stderr to stderr if it cannot
|
|
# write the the log file. This code only disables the error message from a not
|
|
# writable log-error, which can be confusing.
|
|
if test -n "$log_error"
|
|
then
|
|
if test \( -e "$log_error" -a \! -w "$log_error" \) -o \( ! -e "$log_error" -a ! -w "`dirname "$log_error"`" \)
|
|
then
|
|
if test -n "$verbose"
|
|
then
|
|
echo "resetting log-error '$log_error' because no write access"
|
|
fi
|
|
log_error=""
|
|
args="$args --skip-log-error"
|
|
fi
|
|
fi
|
|
|
|
# Configure mariadbd command line
|
|
mysqld_bootstrap="${MYSQLD_BOOTSTRAP-$mysqld}"
|
|
mysqld_install_cmd_line()
|
|
{
|
|
"$mysqld_bootstrap" $defaults $defaults_group_suffix "$mysqld_opt" --bootstrap $silent_startup\
|
|
"--basedir=$basedir" "--datadir=$ldata" --log-warnings=0 --enforce-storage-engine="" \
|
|
"--plugin-dir=${plugindir}" \
|
|
$args --max_allowed_packet=8M \
|
|
--net_buffer_length=16K
|
|
}
|
|
|
|
# Use $auth_root_socket_user if explicitly specified.
|
|
# Otherwise use the owner of datadir - ${user:-$USER}
|
|
# Use 'root' as a fallback
|
|
auth_root_socket_user=${auth_root_socket_user:-${user:-${USER:-root}}}
|
|
|
|
cat_sql()
|
|
{
|
|
echo "create database if not exists mysql;"
|
|
echo "use mysql;"
|
|
|
|
case "$auth_root_authentication_method" in
|
|
normal)
|
|
echo "SET @auth_root_socket=NULL;"
|
|
;;
|
|
socket)
|
|
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" "$mysql_sys_schema"
|
|
if test "$skip_test_db" -eq 0
|
|
then
|
|
cat "$mysql_test_db"
|
|
fi
|
|
|
|
# cat extra file if it's not null
|
|
if test ! -z "$extra_file"
|
|
then
|
|
cat "$extra_file"
|
|
fi
|
|
}
|
|
|
|
# Create the system and help tables by passing them to "mariadbd --bootstrap"
|
|
s_echo "Installing MariaDB/MySQL system tables in '$ldata' ..."
|
|
if cat_sql | eval "$filter_cmd_line" | mysqld_install_cmd_line > /dev/null
|
|
then
|
|
printf "@VERSION@-MariaDB" > "$ldata/mariadb_upgrade_info"
|
|
s_echo "OK"
|
|
else
|
|
log_file_place=$ldata
|
|
if test -n "$log_error"
|
|
then
|
|
log_file_place="$log_error or $log_file_place"
|
|
fi
|
|
echo
|
|
echo "Installation of system tables failed! Examine the logs in"
|
|
echo "$log_file_place for more information."
|
|
echo
|
|
echo "The problem could be conflicting information in an external"
|
|
echo "my.cnf files. You can ignore these by doing:"
|
|
echo
|
|
echo " shell> $0 --defaults-file=~/.my.cnf"
|
|
echo
|
|
echo "You can also try to start the mariadbd daemon with:"
|
|
echo
|
|
echo " shell> $mysqld --skip-grant-tables --general-log &"
|
|
echo
|
|
echo "and use the command line tool $bindir/mariadb"
|
|
echo "to connect to the mysql database and look at the grant tables:"
|
|
echo
|
|
echo " shell> $bindir/mariadb -u root mysql"
|
|
echo " MariaDB> show tables;"
|
|
echo
|
|
echo "Try '$mysqld --help' if you have problems with paths. Using"
|
|
echo "--general-log gives you a log in $ldata that may be helpful."
|
|
link_to_help
|
|
echo "You can find the latest source at https://downloads.mariadb.org and"
|
|
echo "the MariaDB discuss email list at https://lists.mariadb.org/postorius/lists/discuss.lists.mariadb.org/"
|
|
echo
|
|
echo "Please check all of the above before submitting a bug report"
|
|
echo "at https://mariadb.org/jira"
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
# Don't output verbose information if running inside bootstrap or using
|
|
# --srcdir for testing. In such cases, there's no end user looking at
|
|
# the screen.
|
|
if test "$cross_bootstrap" -eq 0 && test -z "$srcdir"
|
|
then
|
|
s_echo
|
|
s_echo "To start mariadbd at boot time you have to copy"
|
|
s_echo "support-files/mariadb.service to the right place for your system"
|
|
|
|
if test "$auth_root_authentication_method" = normal
|
|
then
|
|
echo
|
|
echo
|
|
echo "PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !"
|
|
echo "To do so, start the server, then issue the following command:"
|
|
echo
|
|
echo "'$bindir/mariadb-secure-installation'"
|
|
echo
|
|
echo "which will also give you the option of removing the test"
|
|
echo "databases and anonymous user created by default. This is"
|
|
echo "strongly recommended for production servers."
|
|
else
|
|
echo
|
|
echo
|
|
echo "Two all-privilege accounts were created."
|
|
echo "One is root@localhost, it has no password, but you need to"
|
|
echo "be system 'root' user to connect. Use, for example, sudo mysql"
|
|
echo "The second is $auth_root_socket_user@localhost, it has no password either, but"
|
|
echo "you need to be the system '$auth_root_socket_user' user to connect."
|
|
echo "After connecting you can set the password, if you would need to be"
|
|
echo "able to connect as any of these users with a password and without sudo"
|
|
fi
|
|
|
|
echo
|
|
echo "See the MariaDB Knowledgebase at https://mariadb.com/kb"
|
|
|
|
if test "$in_rpm" -eq 0
|
|
then
|
|
echo
|
|
echo "You can start the MariaDB daemon with:"
|
|
echo "cd '$basedir' ; $bindir/mariadbd-safe --datadir='$ldata'"
|
|
echo
|
|
echo "You can test the MariaDB daemon with mariadb-test-run.pl"
|
|
echo "cd '$basedir/@INSTALL_MYSQLTESTDIR@' ; perl mariadb-test-run.pl"
|
|
fi
|
|
|
|
echo
|
|
echo "Please report any problems at https://mariadb.org/jira"
|
|
echo
|
|
echo "The latest information about MariaDB is available at https://mariadb.org/."
|
|
echo
|
|
echo "Consider joining MariaDB's strong and vibrant community:"
|
|
echo "https://mariadb.org/get-involved/"
|
|
echo
|
|
fi
|
|
|
|
exit 0
|