From b2081eb5476c6ac477b6847d88d169fb318ac6f9 Mon Sep 17 00:00:00 2001 From: Lingyu Song Date: Mon, 23 Dec 2019 13:36:46 +0800 Subject: [PATCH] privilege: fix privilege problem after upgrade (#14177) --- session/bootstrap.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/session/bootstrap.go b/session/bootstrap.go index 29041528b8d60..cfe367d8024c3 100644 --- a/session/bootstrap.go +++ b/session/bootstrap.go @@ -735,7 +735,8 @@ func upgradeToVer13(s Session) { logutil.Logger(context.Background()).Fatal("upgradeToVer13 error", zap.Error(err)) } } - mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Event_priv='Y'") + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Event_priv='Y' WHERE Super_priv='Y'") + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_view_priv='Y',Show_view_priv='Y' WHERE Create_priv='Y'") } func upgradeToVer14(s Session) { @@ -830,11 +831,13 @@ func upgradeToVer25(s Session) { func upgradeToVer26(s Session) { mustExecute(s, CreateRoleEdgesTable) mustExecute(s, CreateDefaultRolesTable) - doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Create_role_priv` ENUM('N','Y')", infoschema.ErrColumnExists) - doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Drop_role_priv` ENUM('N','Y')", infoschema.ErrColumnExists) - doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Account_locked` ENUM('N','Y')", infoschema.ErrColumnExists) - // A root user will have those privileges after upgrading. - mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_role_priv='Y',Drop_role_priv='Y'") + doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Create_role_priv` ENUM('N','Y') DEFAULT 'N'", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Drop_role_priv` ENUM('N','Y') DEFAULT 'N'", infoschema.ErrColumnExists) + doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Account_locked` ENUM('N','Y') DEFAULT 'N'", infoschema.ErrColumnExists) + // user with Create_user_Priv privilege should have Create_view_priv and Show_view_priv after upgrade to v3.0 + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_role_priv='Y',Drop_role_priv='Y' WHERE Create_user_priv='Y'") + // user with Create_Priv privilege should have Create_view_priv and Show_view_priv after upgrade to v3.0 + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_view_priv='Y',Show_view_priv='Y' WHERE Create_priv='Y'") } func upgradeToVer27(s Session) { @@ -880,7 +883,8 @@ func upgradeToVer35(s Session) { func upgradeToVer36(s Session) { doReentrantDDL(s, "ALTER TABLE mysql.user ADD COLUMN `Shutdown_priv` ENUM('N','Y') DEFAULT 'N'", infoschema.ErrColumnExists) // A root user will have those privileges after upgrading. - mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Shutdown_priv='Y' where Super_priv = 'Y'") + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Shutdown_priv='Y' where Super_priv='Y'") + mustExecute(s, "UPDATE HIGH_PRIORITY mysql.user SET Create_tmp_table_priv='Y',Lock_tables_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Event_priv='Y' WHERE Super_priv='Y'") } func upgradeToVer37(s Session) {