@@ -50,6 +50,7 @@ import (
5050 "github.com/pingcap/tidb/pkg/util/dbterror/plannererrors"
5151 semv1 "github.com/pingcap/tidb/pkg/util/sem"
5252 sem "github.com/pingcap/tidb/pkg/util/sem/compat"
53+ semv2 "github.com/pingcap/tidb/pkg/util/sem/v2"
5354 "github.com/pingcap/tidb/pkg/util/sqlescape"
5455 "github.com/stretchr/testify/require"
5556)
@@ -2230,16 +2231,19 @@ func TestGrantOptionWithSEMv2(t *testing.T) {
22302231 rootTk .MustExec ("CREATE USER varuser2" )
22312232 rootTk .MustExec ("CREATE USER varuser3" )
22322233 rootTk .MustExec ("CREATE USER varuser4" )
2234+ rootTk .MustExec ("CREATE USER varuser5" )
22332235 rootTk .MustExec ("CREATE USER grantee" )
22342236
22352237 rootTk .MustExec ("GRANT SYSTEM_VARIABLES_ADMIN, FILE ON *.* TO varuser1" )
22362238 rootTk .MustExec ("GRANT SYSTEM_VARIABLES_ADMIN, FILE ON *.* TO varuser2 WITH GRANT OPTION" )
22372239 rootTk .MustExec ("GRANT RESTRICTED_PRIV_ADMIN ON *.* TO varuser3" )
22382240 rootTk .MustExec ("GRANT RESTRICTED_PRIV_ADMIN ON *.* TO varuser4" )
22392241 rootTk .MustExec ("GRANT SYSTEM_VARIABLES_ADMIN, FILE ON *.* TO varuser4 WITH GRANT OPTION" )
2242+ rootTk .MustExec ("GRANT SYSTEM_VARIABLES_ADMIN, DROP ON *.* TO varuser5 WITH GRANT OPTION" )
22402243
2241- // SYSTEM_VARIABLES_ADMIN is not restricted, FILE is restricted.
2244+ // SYSTEM_VARIABLES_ADMIN is not restricted, FILE and Drop are restricted.
22422245 defer sem .SwitchToSEMForTest (t , sem .V2 )()
2246+ semv2 .AddRestrictedPrivilegesForTest ("Drop" )
22432247 // try to grant SYSTEM_VARIABLES_ADMIN and FILE privilege to grantee with different user
22442248 tk1 := testkit .NewTestKit (t , store )
22452249 require .NoError (t , tk1 .Session ().Auth (& auth.UserIdentity {Username : "varuser1" , Hostname : "%" }, nil , nil , nil ))
@@ -2268,4 +2272,10 @@ func TestGrantOptionWithSEMv2(t *testing.T) {
22682272 require .NoError (t , err )
22692273 err = tk4 .ExecToErr ("GRANT FILE ON *.* TO grantee" )
22702274 require .NoError (t , err )
2275+
2276+ // Test grant drop
2277+ tk5 := testkit .NewTestKit (t , store )
2278+ require .NoError (t , tk5 .Session ().Auth (& auth.UserIdentity {Username : "varuser5" , Hostname : "%" }, nil , nil , nil ))
2279+ err = tk5 .ExecToErr ("GRANT drop ON *.* TO grantee" )
2280+ require .EqualError (t , err , "[planner:1227]Access denied; you need (at least one of) the RESTRICTED_PRIV_ADMIN privilege(s) for this operation" )
22712281}
0 commit comments