Skip to content
Permalink
Browse files
MDEV-26080: SHOW GRANTS does not quote role names properly for DEFAUL…
…T ROLE

- Used single quotes, back quotes are used with commit
fafb35e in 10.3 and will be changed.

Reviewed by: serg@mariadb.org
  • Loading branch information
an3l committed Jul 9, 2021
1 parent 83e442f commit d2dddbf
Show file tree
Hide file tree
Showing 38 changed files with 387 additions and 333 deletions.
@@ -8,7 +8,7 @@ connect conn_1, localhost, test,,;
set role foo;
show grants for test;
Grants for test@%
GRANT foo TO 'test'@'%'
GRANT 'foo' TO 'test'@'%'
GRANT USAGE ON *.* TO 'test'@'%'
show grants for foo;
Grants for foo
@@ -45,29 +45,60 @@ GRANT test_role TO test_user;
SET DEFAULT ROLE test_role FOR test_user;
SHOW GRANTS FOR test_user;
Grants for test_user@%
GRANT test_role TO 'test_user'@'%'
GRANT 'test_role' TO 'test_user'@'%'
GRANT USAGE ON *.* TO 'test_user'@'%'
SET DEFAULT ROLE test_role FOR 'test_user'@'%'
SET DEFAULT ROLE 'test_role' FOR 'test_user'@'%'
SET DEFAULT ROLE NONE for test_user;
SHOW GRANTS FOR test_user;
Grants for test_user@%
GRANT test_role TO 'test_user'@'%'
GRANT 'test_role' TO 'test_user'@'%'
GRANT USAGE ON *.* TO 'test_user'@'%'
SET ROLE test_role;
SET DEFAULT ROLE test_role;
SHOW GRANTS;
Grants for root@localhost
GRANT test_role TO 'root'@'localhost' WITH ADMIN OPTION
GRANT 'test_role' TO 'root'@'localhost' WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'test_role'
SET DEFAULT ROLE test_role FOR 'root'@'localhost'
SET DEFAULT ROLE 'test_role' FOR 'root'@'localhost'
SET DEFAULT ROLE NONE;
SHOW GRANTS;
Grants for root@localhost
GRANT test_role TO 'root'@'localhost' WITH ADMIN OPTION
GRANT 'test_role' TO 'root'@'localhost' WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'test_role'
DROP USER test_user;
DROP ROLE test_role;
CREATE ROLE 'test-role';
CREATE USER 'test-user';
GRANT 'test-role' TO 'test-user';
SET DEFAULT ROLE 'test-role' FOR 'test-user';
SHOW GRANTS FOR 'test-user';
Grants for test-user@%
GRANT 'test-role' TO 'test-user'@'%'
GRANT USAGE ON *.* TO 'test-user'@'%'
SET DEFAULT ROLE 'test-role' FOR 'test-user'@'%'
DROP ROLE 'test-role';
SHOW GRANTS FOR 'test-user';
Grants for test-user@%
GRANT USAGE ON *.* TO 'test-user'@'%'
SET DEFAULT ROLE 'test-role' FOR 'test-user'@'%'
SET DEFAULT ROLE NONE FOR 'test-user';
SHOW GRANTS FOR 'test-user';
Grants for test-user@%
GRANT USAGE ON *.* TO 'test-user'@'%'
CREATE ROLE `r``o'l"e`;
select user from mysql.user where is_role='Y';
user
r`o'l"e
GRANT `r``o'l"e` TO 'test-user';
SET DEFAULT ROLE `r``o'l"e` FOR 'test-user';
SHOW GRANTS FOR 'test-user';
Grants for test-user@%
GRANT 'r`o'l"e' TO 'test-user'@'%'
GRANT USAGE ON *.* TO 'test-user'@'%'
SET DEFAULT ROLE 'r`o'l"e' FOR 'test-user'@'%'
DROP ROLE `r``o'l"e`;
DROP USER 'test-user';
@@ -840,15 +840,15 @@ CREATE ROLE `aRole`;
SET DEFAULT ROLE aRole;
SHOW GRANTS;
Grants for root@localhost
GRANT aRole TO 'root'@'localhost' WITH ADMIN OPTION
GRANT 'aRole' TO 'root'@'localhost' WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'aRole'
SET DEFAULT ROLE aRole FOR 'root'@'localhost'
SET DEFAULT ROLE 'aRole' FOR 'root'@'localhost'
SET DEFAULT ROLE NONE;
SHOW GRANTS;
Grants for root@localhost
GRANT aRole TO 'root'@'localhost' WITH ADMIN OPTION
GRANT 'aRole' TO 'root'@'localhost' WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'aRole'
@@ -61,17 +61,17 @@ SET ROLE mariadb_dump_import_role;
/*!80001 CREATE ROLE 'role_2' */;
/*M!100005 CREATE ROLE 'role_2' WITH ADMIN mariadb_dump_import_role */;
/*M!100005 GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION */;
GRANT role_1 TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT 'role_1' TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION;
/*M!100005 SET DEFAULT ROLE NONE FOR 'root'@'localhost' */;
/*!80001 ALTER USER 'root'@'localhost' DEFAULT ROLE NONE */;
GRANT role_1 TO 'USER'@'%';
GRANT role_2 TO 'USER'@'%';
GRANT 'role_1' TO 'USER'@'%';
GRANT 'role_2' TO 'USER'@'%';
GRANT USAGE ON *.* TO 'USER'@'%' IDENTIFIED VIA unix_socket;
/*M!100005 SET DEFAULT ROLE 'role_2' FOR 'USER'@'%' */;
/*!80001 ALTER USER 'USER'@'%' DEFAULT ROLE 'role_2' */;
GRANT role_2 TO 'role_1' WITH ADMIN OPTION;
GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION;
GRANT SHOW DATABASES ON *.* TO 'role_1';
GRANT USAGE ON *.* TO 'role_2';
GRANT USAGE ON *.* TO 'role_2';
@@ -196,17 +196,17 @@ SET ROLE mariadb_dump_import_role;
/*!80001 CREATE ROLE 'role_2' */;
/*M!100103 CREATE OR REPLACE ROLE 'role_2' WITH ADMIN mariadb_dump_import_role */;
/*M!100005 GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION */;
GRANT role_1 TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT 'role_1' TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION;
/*M!100005 SET DEFAULT ROLE NONE FOR 'root'@'localhost' */;
/*!80001 ALTER USER 'root'@'localhost' DEFAULT ROLE NONE */;
GRANT role_1 TO 'USER'@'%';
GRANT role_2 TO 'USER'@'%';
GRANT 'role_1' TO 'USER'@'%';
GRANT 'role_2' TO 'USER'@'%';
GRANT USAGE ON *.* TO 'USER'@'%' IDENTIFIED VIA unix_socket;
/*M!100005 SET DEFAULT ROLE 'role_2' FOR 'USER'@'%' */;
/*!80001 ALTER USER 'USER'@'%' DEFAULT ROLE 'role_2' */;
GRANT role_2 TO 'role_1' WITH ADMIN OPTION;
GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION;
GRANT SHOW DATABASES ON *.* TO 'role_1';
GRANT USAGE ON *.* TO 'role_2';
GRANT USAGE ON *.* TO 'role_2';
@@ -317,17 +317,17 @@ SET ROLE mariadb_dump_import_role;
/*!80001 CREATE ROLE IF NOT EXISTS 'role_2' */;
/*M!100005 CREATE ROLE IF NOT EXISTS 'role_2' WITH ADMIN mariadb_dump_import_role */;
/*M!100005 GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION */;
GRANT role_1 TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT 'role_1' TO 'root'@'localhost' WITH ADMIN OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION;
/*M!100005 SET DEFAULT ROLE NONE FOR 'root'@'localhost' */;
/*!80001 ALTER USER 'root'@'localhost' DEFAULT ROLE NONE */;
GRANT role_1 TO 'USER'@'%';
GRANT role_2 TO 'USER'@'%';
GRANT 'role_1' TO 'USER'@'%';
GRANT 'role_2' TO 'USER'@'%';
GRANT USAGE ON *.* TO 'USER'@'%' IDENTIFIED VIA unix_socket;
/*M!100005 SET DEFAULT ROLE 'role_2' FOR 'USER'@'%' */;
/*!80001 ALTER USER 'USER'@'%' DEFAULT ROLE 'role_2' */;
GRANT role_2 TO 'role_1' WITH ADMIN OPTION;
GRANT 'role_2' TO 'role_1' WITH ADMIN OPTION;
GRANT SHOW DATABASES ON *.* TO 'role_1';
GRANT USAGE ON *.* TO 'role_2';
GRANT USAGE ON *.* TO 'role_2';
@@ -27,19 +27,19 @@ grant select on *.* to foo@localhost with admin option;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'admin option' at line 1
show grants for foo@localhost;
Grants for foo@localhost
GRANT 'role1' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT 'role2' TO 'foo'@'localhost'
GRANT 'role5' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT CREATE USER ON *.* TO 'foo'@'localhost'
GRANT role1 TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT role2 TO 'foo'@'localhost'
GRANT role5 TO 'foo'@'localhost' WITH ADMIN OPTION
show grants for role1;
Grants for role1
GRANT 'role2' TO 'role1'
GRANT 'role3' TO 'role1' WITH ADMIN OPTION
GRANT 'role4' TO 'role3' WITH ADMIN OPTION
GRANT USAGE ON *.* TO 'role1'
GRANT USAGE ON *.* TO 'role2'
GRANT USAGE ON *.* TO 'role3'
GRANT USAGE ON *.* TO 'role4'
GRANT role2 TO 'role1'
GRANT role3 TO 'role1' WITH ADMIN OPTION
GRANT role4 TO 'role3' WITH ADMIN OPTION
show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
@@ -58,19 +58,19 @@ localhost root role4 Y
flush privileges;
show grants for foo@localhost;
Grants for foo@localhost
GRANT 'role1' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT 'role2' TO 'foo'@'localhost'
GRANT 'role5' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT CREATE USER ON *.* TO 'foo'@'localhost'
GRANT role1 TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT role2 TO 'foo'@'localhost'
GRANT role5 TO 'foo'@'localhost' WITH ADMIN OPTION
show grants for role1;
Grants for role1
GRANT 'role2' TO 'role1'
GRANT 'role3' TO 'role1' WITH ADMIN OPTION
GRANT 'role4' TO 'role3' WITH ADMIN OPTION
GRANT USAGE ON *.* TO 'role1'
GRANT USAGE ON *.* TO 'role2'
GRANT USAGE ON *.* TO 'role3'
GRANT USAGE ON *.* TO 'role4'
GRANT role2 TO 'role1'
GRANT role3 TO 'role1' WITH ADMIN OPTION
GRANT role4 TO 'role3' WITH ADMIN OPTION
show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
@@ -89,18 +89,18 @@ revoke admin option for role2 from foo@localhost;
revoke admin option for role1 from root@localhost;
show grants for foo@localhost;
Grants for foo@localhost
GRANT 'role2' TO 'foo'@'localhost'
GRANT 'role5' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT CREATE USER ON *.* TO 'foo'@'localhost'
GRANT role2 TO 'foo'@'localhost'
GRANT role5 TO 'foo'@'localhost' WITH ADMIN OPTION
show grants for role1;
Grants for role1
GRANT 'role2' TO 'role1' WITH ADMIN OPTION
GRANT 'role3' TO 'role1' WITH ADMIN OPTION
GRANT 'role4' TO 'role3'
GRANT USAGE ON *.* TO 'role1'
GRANT USAGE ON *.* TO 'role2'
GRANT USAGE ON *.* TO 'role3'
GRANT USAGE ON *.* TO 'role4'
GRANT role2 TO 'role1' WITH ADMIN OPTION
GRANT role3 TO 'role1' WITH ADMIN OPTION
GRANT role4 TO 'role3'
show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
@@ -118,18 +118,18 @@ localhost root role4 Y
flush privileges;
show grants for foo@localhost;
Grants for foo@localhost
GRANT 'role2' TO 'foo'@'localhost'
GRANT 'role5' TO 'foo'@'localhost' WITH ADMIN OPTION
GRANT CREATE USER ON *.* TO 'foo'@'localhost'
GRANT role2 TO 'foo'@'localhost'
GRANT role5 TO 'foo'@'localhost' WITH ADMIN OPTION
show grants for role1;
Grants for role1
GRANT 'role2' TO 'role1' WITH ADMIN OPTION
GRANT 'role3' TO 'role1' WITH ADMIN OPTION
GRANT 'role4' TO 'role3'
GRANT USAGE ON *.* TO 'role1'
GRANT USAGE ON *.* TO 'role2'
GRANT USAGE ON *.* TO 'role3'
GRANT USAGE ON *.* TO 'role4'
GRANT role2 TO 'role1' WITH ADMIN OPTION
GRANT role3 TO 'role1' WITH ADMIN OPTION
GRANT role4 TO 'role3'
show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
@@ -66,7 +66,7 @@ localhost r1 r2 N
localhost root r2 Y
SHOW GRANTS FOR r1@localhost;
Grants for r1@localhost
GRANT r2 TO 'r1'@'localhost'
GRANT 'r2' TO 'r1'@'localhost'
GRANT USAGE ON *.* TO 'r1'@'localhost'
DROP USER u1;
DROP ROLE r2;
@@ -13,10 +13,10 @@ Host User Role Admin_option
localhost root r1 Y
show grants;
Grants for root@localhost
GRANT 'r1' TO 'root'@'localhost' WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'r1'
GRANT r1 TO 'root'@'localhost' WITH ADMIN OPTION
drop role r1;
select * from mysql.roles_mapping;
Host User Role Admin_option
@@ -38,7 +38,7 @@ connect c1, localhost, foo,,mysqltest1;
connection c1;
show grants;
Grants for foo@localhost
GRANT role4 TO 'foo'@'localhost'
GRANT 'role4' TO 'foo'@'localhost'
GRANT USAGE ON *.* TO 'foo'@'localhost'
GRANT CREATE VIEW ON `mysqltest1`.* TO 'foo'@'localhost'
select * from test.v1;
@@ -7,15 +7,15 @@ grant r3 to r2;
grant r1 to u1;
show grants for u1;
Grants for u1@%
GRANT 'r1' TO 'u1'@'%'
GRANT USAGE ON *.* TO 'u1'@'%'
GRANT r1 TO 'u1'@'%'
show grants for r1;
Grants for r1
GRANT 'r2' TO 'r1'
GRANT 'r3' TO 'r2'
GRANT USAGE ON *.* TO 'r1'
GRANT USAGE ON *.* TO 'r2'
GRANT USAGE ON *.* TO 'r3'
GRANT r2 TO 'r1'
GRANT r3 TO 'r2'
grant SELECT on *.* to u1;
grant INSERT on mysql.* to r1;
grant DELETE on mysql.roles_mapping to r2;
@@ -33,6 +33,8 @@ revoke execute on procedure mysql.test_proc from r2;
ERROR 42000: There is no such grant defined for user 'r2' on host '' on routine 'test_proc'
show grants for r1;
Grants for r1
GRANT 'r2' TO 'r1'
GRANT 'r3' TO 'r2'
GRANT DELETE ON `mysql`.`roles_mapping` TO 'r2'
GRANT EXECUTE ON FUNCTION `mysql`.`test_func` TO 'r2'
GRANT EXECUTE ON PROCEDURE `mysql`.`test_proc` TO 'r3'
@@ -41,17 +43,15 @@ GRANT UPDATE ON `mysql`.`user` TO 'r3'
GRANT USAGE ON *.* TO 'r1'
GRANT USAGE ON *.* TO 'r2'
GRANT USAGE ON *.* TO 'r3'
GRANT r2 TO 'r1'
GRANT r3 TO 'r2'
show grants for r2;
Grants for r2
GRANT 'r3' TO 'r2'
GRANT DELETE ON `mysql`.`roles_mapping` TO 'r2'
GRANT EXECUTE ON FUNCTION `mysql`.`test_func` TO 'r2'
GRANT EXECUTE ON PROCEDURE `mysql`.`test_proc` TO 'r3'
GRANT UPDATE ON `mysql`.`user` TO 'r3'
GRANT USAGE ON *.* TO 'r2'
GRANT USAGE ON *.* TO 'r3'
GRANT r3 TO 'r2'
show grants for r3;
Grants for r3
GRANT EXECUTE ON PROCEDURE `mysql`.`test_proc` TO 'r3'
@@ -64,11 +64,11 @@ returns CHAR(50) DETERMINISTIC
return concat('Test string: ',s);
show grants for r2;
Grants for r2
GRANT 'r3' TO 'r2'
GRANT DELETE ON `mysql`.`roles_mapping` TO 'r2'
GRANT UPDATE ON `mysql`.`user` TO 'r3'
GRANT USAGE ON *.* TO 'r2'
GRANT USAGE ON *.* TO 'r3'
GRANT r3 TO 'r2'
connect u1,localhost,u1,,;
select mysql.test_func("none");
ERROR 42000: execute command denied to user 'u1'@'%' for routine 'mysql.test_func'
@@ -24,11 +24,11 @@ grant select on m_.* to r2;
grant r2 to r1;
show grants for u1@localhost;
Grants for u1@localhost
GRANT r1 TO 'u1'@'localhost'
GRANT 'r1' TO 'u1'@'localhost'
GRANT USAGE ON *.* TO 'u1'@'localhost'
show grants for r1;
Grants for r1
GRANT r2 TO 'r1'
GRANT 'r2' TO 'r1'
GRANT USAGE ON *.* TO 'r1'
GRANT USAGE ON *.* TO 'r2'
GRANT SELECT ON `test`.* TO 'r2'
@@ -21,9 +21,9 @@ show tables in mysqltest2;
Tables_in_mysqltest2
show grants;
Grants for foo@localhost
GRANT r2 TO 'foo'@'localhost'
GRANT 'r2' TO 'foo'@'localhost'
GRANT USAGE ON *.* TO 'foo'@'localhost'
GRANT r1 TO 'r2'
GRANT 'r1' TO 'r2'
GRANT USAGE ON *.* TO 'r2'
GRANT ALL PRIVILEGES ON `mysqltest2`.* TO 'r2'
GRANT USAGE ON *.* TO 'r1'
@@ -9,7 +9,7 @@ current_user
@localhost
show grants;
Grants for @localhost
GRANT r1 TO ''@'localhost'
GRANT 'r1' TO ''@'localhost'
GRANT USAGE ON *.* TO ''@'localhost'
connection default;
drop role r1;

0 comments on commit d2dddbf

Please sign in to comment.