mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
WL#4991 mysql_upgrade --fix-privilege-tables
(backport) mysql_upgrade script accepts --upgrade-system-tables option, fixing only system tables in this case. per-file comments: client/mysql_upgrade.c WL#4991 mysql_upgrade --fix-privilege-tables --upgrade-system-tables option added. if it is set, the tool won't look for the mysqlcheck then run_mysqlcheck_fixnames() and run_mysqlcheck_upgrade won't be called. mysql-test/r/mysql_upgrade.result WL#4991 mysql_upgrade --fix-privilege-tables test result added mysql-test/t/mysql_upgrade.test WL#4991 mysql_upgrade --fix-privilege-tables test case added
This commit is contained in:
@ -34,7 +34,8 @@
|
|||||||
static char mysql_path[FN_REFLEN];
|
static char mysql_path[FN_REFLEN];
|
||||||
static char mysqlcheck_path[FN_REFLEN];
|
static char mysqlcheck_path[FN_REFLEN];
|
||||||
|
|
||||||
static my_bool opt_force, opt_verbose, debug_info_flag, debug_check_flag;
|
static my_bool opt_force, opt_verbose, debug_info_flag, debug_check_flag,
|
||||||
|
opt_systables_only;
|
||||||
static uint my_end_arg= 0;
|
static uint my_end_arg= 0;
|
||||||
static char *opt_user= (char*)"root";
|
static char *opt_user= (char*)"root";
|
||||||
|
|
||||||
@ -121,6 +122,10 @@ static struct my_option my_long_options[]=
|
|||||||
#include <sslopt-longopts.h>
|
#include <sslopt-longopts.h>
|
||||||
{"tmpdir", 't', "Directory for temporary files",
|
{"tmpdir", 't', "Directory for temporary files",
|
||||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"upgrade-system-tables", 's', "Only upgrade the system tables "
|
||||||
|
"do not try to upgrade the data.",
|
||||||
|
(uchar**)&opt_systables_only, (uchar**)&opt_systables_only, 0,
|
||||||
|
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"user", 'u', "User for login if not current user.", (uchar**) &opt_user,
|
{"user", 'u', "User for login if not current user.", (uchar**) &opt_user,
|
||||||
(uchar**) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(uchar**) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"verbose", 'v', "Display more output about the process",
|
{"verbose", 'v', "Display more output about the process",
|
||||||
@ -838,8 +843,15 @@ int main(int argc, char **argv)
|
|||||||
/* Find mysql */
|
/* Find mysql */
|
||||||
find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);
|
find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name);
|
||||||
|
|
||||||
|
if (!opt_systables_only)
|
||||||
|
{
|
||||||
/* Find mysqlcheck */
|
/* Find mysqlcheck */
|
||||||
find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name);
|
find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("The --upgrade-system-tables option was used, databases won't be touched.\n");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Read the mysql_upgrade_info file to check if mysql_upgrade
|
Read the mysql_upgrade_info file to check if mysql_upgrade
|
||||||
@ -856,8 +868,8 @@ int main(int argc, char **argv)
|
|||||||
/*
|
/*
|
||||||
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
|
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
|
||||||
*/
|
*/
|
||||||
if (run_mysqlcheck_fixnames() ||
|
if ((!opt_systables_only &&
|
||||||
run_mysqlcheck_upgrade() ||
|
(run_mysqlcheck_fixnames() || run_mysqlcheck_upgrade())) ||
|
||||||
run_sql_fix_privilege_tables())
|
run_sql_fix_privilege_tables())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -127,3 +127,7 @@ mysql.time_zone_transition OK
|
|||||||
mysql.time_zone_transition_type OK
|
mysql.time_zone_transition_type OK
|
||||||
mysql.user OK
|
mysql.user OK
|
||||||
set GLOBAL sql_mode=default;
|
set GLOBAL sql_mode=default;
|
||||||
|
Looking for 'mysql' as: /home/hf/work/mysql_common/wl4991/client/mysql
|
||||||
|
The --upgrade-system-tables option was used, databases won't be touched.
|
||||||
|
Running 'mysql_fix_privilege_tables'...
|
||||||
|
OK
|
||||||
|
@ -89,3 +89,9 @@ DROP USER mysqltest1@'%';
|
|||||||
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
|
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
|
||||||
--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
|
--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
|
||||||
eval set GLOBAL sql_mode=default;
|
eval set GLOBAL sql_mode=default;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test the --upgrade-system-tables option
|
||||||
|
#
|
||||||
|
--exec $MYSQL_UPGRADE --upgrade-system-tables
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user