Commit b8b9d723 authored by Chad MILLER's avatar Chad MILLER

Bug#30261: "mysqld --help" no longer possible for root

The check for root-ness would signal an error.  Errors would make the
server exit before usage (help) information was printed.

Now, test for whether we want help regardless of whether we're going
to exit with an error.  If plugins are not initialized by the time we 
print usage information, inform the user that some parameters are 
missing.
parent 3ecd2505
......@@ -682,6 +682,8 @@ bool mysqld_embedded=0;
bool mysqld_embedded=1;
#endif
static my_bool plugins_are_initialized= FALSE;
#ifndef DBUG_OFF
static const char* default_dbug_option;
#endif
......@@ -1176,10 +1178,10 @@ extern "C" void unireg_abort(int exit_code)
{
DBUG_ENTER("unireg_abort");
if (opt_help)
usage();
if (exit_code)
sql_print_error("Aborting\n");
else if (opt_help)
usage();
clean_up(!opt_help && (exit_code || !opt_bootstrap)); /* purecov: inspected */
DBUG_PRINT("quit",("done with cleanup in unireg_abort"));
wait_for_signal_thread_to_end();
......@@ -3841,6 +3843,7 @@ server.");
if (ha_init_errors())
DBUG_RETURN(1);
{
if (plugin_init(&defaults_argc, defaults_argv,
(opt_noacl ? PLUGIN_INIT_SKIP_PLUGIN_TABLE : 0) |
(opt_help ? PLUGIN_INIT_SKIP_INITIALIZATION : 0)))
......@@ -3848,6 +3851,8 @@ server.");
sql_print_error("Failed to initialize plugins.");
unireg_abort(1);
}
plugins_are_initialized= TRUE; /* Don't separate from init function */
}
if (opt_help)
unireg_abort(0);
......@@ -7378,7 +7383,8 @@ static void usage(void)
default_collation_name= (char*) default_charset_info->name;
print_version();
puts("\
Copyright (C) 2000 MySQL AB, by Monty and others\n\
Copyright (C) 2000-2008 MySQL AB, by Monty and others\n\
Copyright (C) 2008 Sun Microsystems, Inc.\n\
This software comes with ABSOLUTELY NO WARRANTY. This is free software,\n\
and you are welcome to modify and redistribute it under the GPL license\n\n\
Starts the MySQL database server\n");
......@@ -7408,6 +7414,13 @@ Starts the MySQL database server\n");
/* Print out all the options including plugin supplied options */
my_print_help_inc_plugins(my_long_options, sizeof(my_long_options)/sizeof(my_option));
if (! plugins_are_initialized)
{
puts("\n\
Plugins have parameters that are not reflected in this list\n\
because execution stopped before plugins were initialized.");
}
puts("\n\
To see what values a running MySQL server is using, type\n\
'mysqladmin variables' instead of 'mysqld --verbose --help'.");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment