Skip to content

Commit 2cf45df

Browse files
committed
Tests clean-up regarding SUPER privilege:
SUPER has been deprecated in 8.0 so it will eventually be removed, all logic in Shell was already updated to ensure SUPER is not used in 8.0, however, some tests weren't updated yet. This patch updates the remaining tests that make use of SUPER to ensure it's not used when ran against a version >= 8.0. Change-Id: I7050ae6c07eb41e4cbb03c9b70b5fa8b59afb27b
1 parent 152201a commit 2cf45df

File tree

5 files changed

+74
-53
lines changed

5 files changed

+74
-53
lines changed

unittest/modules/schema_dumper_t.cc

Lines changed: 68 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,12 @@
2525
#include <algorithm>
2626
#include <array>
2727
#include <set>
28-
#include <unordered_set>
2928

3029
// needs to be included first for FRIEND_TEST
3130
#include "unittest/gprod_clean.h"
3231

3332
#include "modules/util/dump/schema_dumper.h"
3433

35-
#include "modules/util/load/dump_loader.h"
3634
#include "mysqlshdk/libs/db/mysql/session.h"
3735
#include "mysqlshdk/libs/storage/backend/file.h"
3836
#include "mysqlshdk/libs/utils/utils_file.h"
@@ -789,30 +787,10 @@ TEST_F(Schema_dumper_test, dump_filtered_grants) {
789787
"CREATE USER IF NOT EXISTS 'admin2'@'localhost' IDENTIFIED BY 'pwd';");
790788
session->execute(
791789
"GRANT ALL ON *.* TO 'admin2'@'localhost' WITH GRANT OPTION;");
792-
session->execute(
793-
"CREATE USER IF NOT EXISTS 'superfirst'@'localhost' IDENTIFIED BY "
794-
"'pwd';");
795-
session->execute(
796-
"GRANT SUPER, LOCK TABLES ON *.* TO 'superfirst'@'localhost';");
797-
session->execute(
798-
"CREATE USER IF NOT EXISTS 'superafter'@'localhost' IDENTIFIED BY "
799-
"'pwd';");
800-
session->execute(
801-
"GRANT INSERT,super, UPDATE ON *.* TO 'superafter'@'localhost';");
802-
session->execute(
803-
"CREATE USER IF NOT EXISTS 'superonly'@'localhost' IDENTIFIED BY "
804-
"'pwd';");
805-
session->execute("GRANT SUPER, RELOAD ON *.* TO 'superonly'@'localhost';");
806790
session->execute(
807791
"CREATE USER IF NOT EXISTS 'dumptestuser'@'localhost' IDENTIFIED BY "
808792
"'pwd';");
809793
session->execute("GRANT SELECT ON * . * TO 'dumptestuser'@'localhost';");
810-
session->execute(
811-
"CREATE USER IF NOT EXISTS 'abr@dab'@'localhost' IDENTIFIED BY "
812-
"'pwd';");
813-
session->execute(
814-
"GRANT INSERT,SUPER,FILE,LOCK TABLES , reload, "
815-
"SELECT ON * . * TO 'abr@dab'@'localhost';");
816794
std::string partial_revoke = "ON";
817795
if (_target_server_version >= mysqlshdk::utils::Version(8, 0, 20)) {
818796
partial_revoke = session->query("show variables like 'partial_revokes';")
@@ -907,34 +885,13 @@ TEST_F(Schema_dumper_test, dump_filtered_grants) {
907885
EXPECT_THAT(out,
908886
AnyOf(HasSubstr(dumptestuser),
909887
HasSubstr(shcore::str_replace(dumptestuser, "'", "`"))));
910-
EXPECT_THAT(out, HasSubstr("-- begin user 'abr@dab'@'localhost'"));
911888

912889
if (_target_server_version >= mysqlshdk::utils::Version(8, 0, 20)) {
913890
EXPECT_THAT(out,
914891
HasSubstr("GRANT SELECT ON *.* TO `dumptestuser`@`localhost`"));
915-
EXPECT_THAT(
916-
out,
917-
HasSubstr("GRANT LOCK TABLES ON *.* TO `superfirst`@`localhost`;"));
918-
EXPECT_THAT(
919-
out,
920-
HasSubstr("GRANT INSERT, UPDATE ON *.* TO `superafter`@`localhost`;"));
921-
EXPECT_THAT(out, Not(HasSubstr("TO `superonly`@`localhost`;")));
922-
EXPECT_THAT(out, HasSubstr(R"(-- begin grants 'abr@dab'@'localhost'
923-
GRANT SELECT, INSERT, LOCK TABLES ON *.* TO `abr@dab`@`localhost`;
924-
-- end grants 'abr@dab'@'localhost')"));
925892
} else {
926893
EXPECT_THAT(
927894
out, HasSubstr("GRANT SELECT ON *.* TO 'dumptestuser'@'localhost';"));
928-
EXPECT_THAT(
929-
out,
930-
HasSubstr("GRANT LOCK TABLES ON *.* TO 'superfirst'@'localhost';"));
931-
EXPECT_THAT(
932-
out,
933-
HasSubstr("GRANT INSERT, UPDATE ON *.* TO 'superafter'@'localhost';"));
934-
EXPECT_THAT(out, Not(HasSubstr("TO 'superonly'@'localhost';")));
935-
EXPECT_THAT(out, HasSubstr(R"(-- begin grants 'abr@dab'@'localhost'
936-
GRANT SELECT, INSERT, LOCK TABLES ON *.* TO 'abr@dab'@'localhost';
937-
-- end grants 'abr@dab'@'localhost')"));
938895
}
939896
EXPECT_THAT(out, Not(HasSubstr("SUPER")));
940897

@@ -945,11 +902,7 @@ GRANT SELECT, INSERT, LOCK TABLES ON *.* TO 'abr@dab'@'localhost';
945902
testutil->call_mysqlsh_c({_mysql_uri, "--sql", "-f", file_path});
946903
EXPECT_TRUE(output_handler.std_err.empty());
947904

948-
session->execute("drop user 'superfirst'@'localhost';");
949-
session->execute("drop user 'superafter'@'localhost';");
950-
session->execute("drop user 'superonly'@'localhost';");
951905
session->execute("drop user 'dumptestuser'@'localhost';");
952-
session->execute("drop user 'abr@dab'@'localhost';");
953906
if (_target_server_version >= mysqlshdk::utils::Version(8, 0, 20)) {
954907
session->execute("DROP ROLE da_dumper");
955908
session->execute("DROP USER `dave`@`%`");
@@ -958,6 +911,74 @@ GRANT SELECT, INSERT, LOCK TABLES ON *.* TO 'abr@dab'@'localhost';
958911
}
959912
}
960913

914+
TEST_F(Schema_dumper_test, dump_filtered_grants_super_priv) {
915+
// Skip if version >= 8.4. Super has been removed in 8.4.
916+
if (_target_server_version >= mysqlshdk::utils::Version(8, 4)) {
917+
SKIP_TEST("SUPER has been removed in 8.4.");
918+
};
919+
920+
session->execute(
921+
"CREATE USER IF NOT EXISTS 'superfirst'@'localhost' IDENTIFIED BY "
922+
"'pwd';");
923+
session->execute("GRANT SUPER ON *.* TO 'superfirst'@'localhost';");
924+
session->execute("GRANT LOCK TABLES ON *.* TO 'superfirst'@'localhost';");
925+
session->execute(
926+
"CREATE USER IF NOT EXISTS 'superafter'@'localhost' IDENTIFIED BY "
927+
"'pwd';");
928+
session->execute("GRANT INSERT, UPDATE ON *.* TO 'superafter'@'localhost';");
929+
session->execute("GRANT SUPER ON *.* TO 'superafter'@'localhost';");
930+
session->execute(
931+
"CREATE USER IF NOT EXISTS 'superonly'@'localhost' IDENTIFIED BY "
932+
"'pwd';");
933+
session->execute("GRANT RELOAD ON *.* TO 'superonly'@'localhost';");
934+
session->execute("GRANT SUPER ON *.* TO 'superonly'@'localhost';");
935+
session->execute(
936+
"CREATE USER IF NOT EXISTS 'abr@dab'@'localhost' IDENTIFIED BY "
937+
"'pwd';");
938+
session->execute(
939+
"GRANT INSERT,SUPER,FILE,LOCK TABLES , reload, "
940+
"SELECT ON * . * TO 'abr@dab'@'localhost';");
941+
942+
Schema_dumper sd(session);
943+
sd.opt_mysqlaas = true;
944+
sd.opt_strip_restricted_grants = true;
945+
Filtering_options filters;
946+
filters.users().exclude(
947+
std::array{"mysql.infoschema", "mysql.session", "mysql.sys", "root"});
948+
EXPECT_GE(sd.dump_grants(file.get(), filters).size(), 3);
949+
EXPECT_TRUE(output_handler.std_err.empty());
950+
wipe_all();
951+
file->flush();
952+
file->close();
953+
auto out = testutil->cat_file(file_path);
954+
955+
EXPECT_THAT(
956+
out, HasSubstr("GRANT LOCK TABLES ON *.* TO 'superfirst'@'localhost';"));
957+
EXPECT_THAT(
958+
out,
959+
HasSubstr("GRANT INSERT, UPDATE ON *.* TO 'superafter'@'localhost';"));
960+
EXPECT_THAT(out, Not(HasSubstr("TO 'superonly'@'localhost';")));
961+
962+
EXPECT_THAT(out, HasSubstr("-- begin user 'abr@dab'@'localhost'"));
963+
EXPECT_THAT(out, HasSubstr(R"(-- begin grants 'abr@dab'@'localhost'
964+
GRANT SELECT, INSERT, LOCK TABLES ON *.* TO 'abr@dab'@'localhost';
965+
-- end grants 'abr@dab'@'localhost')"));
966+
967+
EXPECT_THAT(out, Not(HasSubstr("SUPER")));
968+
969+
EXPECT_THAT(out, Not(HasSubstr("'root'")));
970+
EXPECT_THAT(out, Not(HasSubstr("EXISTS 'mysql")));
971+
972+
wipe_all();
973+
testutil->call_mysqlsh_c({_mysql_uri, "--sql", "-f", file_path});
974+
EXPECT_TRUE(output_handler.std_err.empty());
975+
976+
session->execute("drop user 'superfirst'@'localhost';");
977+
session->execute("drop user 'superafter'@'localhost';");
978+
session->execute("drop user 'superonly'@'localhost';");
979+
session->execute("drop user 'abr@dab'@'localhost';");
980+
}
981+
961982
TEST_F(Schema_dumper_test, opt_mysqlaas) {
962983
Schema_dumper sd(session);
963984
sd.opt_mysqlaas = true;

unittest/scripts/js_devapi/scripts/dba_interactive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ connect_to_sandbox([__mysql_sandbox_port2]);
176176
session.runSql('SET GLOBAL super_read_only = 0');
177177
session.runSql("SET SQL_LOG_BIN=0");
178178
session.runSql("CREATE USER missingprivileges@localhost");
179-
session.runSql("GRANT SUPER, CREATE USER ON *.* TO missingprivileges@localhost");
179+
session.runSql("GRANT CREATE USER ON *.* TO missingprivileges@localhost");
180180
session.runSql("GRANT SELECT ON `performance_schema`.* TO missingprivileges@localhost WITH GRANT OPTION");
181181
session.runSql("GRANT SELECT ON `mysql_innodb_cluster_metadata`.* TO missingprivileges@localhost");
182182
session.runSql("GRANT REPLICATION SLAVE ON *.* TO missingprivileges@localhost WITH GRANT OPTION;");

unittest/scripts/js_devapi/scripts/dba_no_interactive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ dba.configureLocalInstance('root@localhost:' + __mysql_sandbox_port2, {mycnfPath
121121
connect_to_sandbox([__mysql_sandbox_port2]);
122122
session.runSql("SET SQL_LOG_BIN=0");
123123
session.runSql("CREATE USER missingprivileges@localhost");
124-
session.runSql("GRANT SUPER, CREATE USER ON *.* TO missingprivileges@localhost");
124+
session.runSql("GRANT CREATE USER ON *.* TO missingprivileges@localhost");
125125
session.runSql("GRANT SELECT ON `performance_schema`.* TO missingprivileges@localhost WITH GRANT OPTION");
126126
session.runSql("GRANT SELECT ON `mysql_innodb_cluster_metadata`.* TO missingprivileges@localhost");
127127
session.runSql("GRANT REPLICATION SLAVE ON *.* TO missingprivileges@localhost WITH GRANT OPTION;");

unittest/scripts/js_devapi/validation/dba_interactive.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ The instance cluster settings were successfully persisted.
267267

268268
//@# Dba: configureLocalInstance not enough privileges 1 {VER(<8.0.0)}
269269
|ERROR: The account 'missingprivileges'@'localhost' is missing privileges required to manage an InnoDB Cluster:|
270-
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
270+
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN, SUPER ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
271271
|GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
272272
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
273273
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
@@ -281,7 +281,7 @@ The instance cluster settings were successfully persisted.
281281

282282
//@# Dba: configureLocalInstance not enough privileges 2 {VER(<8.0.0)}
283283
|ERROR: The account 'missingprivileges'@'localhost' is missing privileges required to manage an InnoDB Cluster:|
284-
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
284+
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN, SUPER ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
285285
|GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
286286
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
287287
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
@@ -295,7 +295,7 @@ The instance cluster settings were successfully persisted.
295295

296296
//@# Dba: configureLocalInstance not enough privileges 3 {VER(<8.0.0)}
297297
|ERROR: The account 'missingprivileges'@'localhost' is missing privileges required to manage an InnoDB Cluster:|
298-
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
298+
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN, SUPER ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
299299
|GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
300300
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
301301
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|

unittest/scripts/js_devapi/validation/dba_no_interactive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ The instance '<<<hostname>>>:<<<__mysql_sandbox_port2>>>' was configured to be u
280280

281281
//@# Dba: configureLocalInstance not enough privileges {VER(<8.0.0)}
282282
|ERROR: The account 'missingprivileges'@'localhost' is missing privileges required to manage an InnoDB Cluster:|
283-
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
283+
|GRANT FILE, PROCESS, RELOAD, REPLICATION CLIENT, SELECT, SHUTDOWN, SUPER ON *.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
284284
|GRANT DELETE, INSERT, UPDATE ON mysql.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
285285
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|
286286
|GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, REFERENCES, SHOW VIEW, TRIGGER, UPDATE ON mysql_innodb_cluster_metadata_bkp.* TO 'missingprivileges'@'localhost' WITH GRANT OPTION;|

0 commit comments

Comments
 (0)