diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index fccd3715af7..8f9fa13a070 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -100,6 +100,26 @@ GRANT SELECT, REFERENCES, REFERENCES (a) ON `test`.`t1` TO 'mysqltest_1'@'localh select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1"; table_priv column_priv Select,References References +grant all on test.* to user1@localhost with grant option; +revoke all on test.* from user1@localhost; +show grants for user1@localhost; +Grants for user1@localhost +GRANT USAGE ON *.* TO 'user1'@'localhost' +GRANT USAGE ON `test`.* TO 'user1'@'localhost' WITH GRANT OPTION +revoke grant option on test.* from user1@localhost; +show grants for user1@localhost; +Grants for user1@localhost +GRANT USAGE ON *.* TO 'user1'@'localhost' +grant all on test.t1 to user2@localhost with grant option; +revoke all on test.t1 from user2@localhost; +show grants for user2@localhost; +Grants for user2@localhost +GRANT USAGE ON *.* TO 'user2'@'localhost' +GRANT USAGE ON `test`.`t1` TO 'user2'@'localhost' WITH GRANT OPTION +revoke grant option on test.t1 from user2@localhost; +show grants for user2@localhost; +Grants for user2@localhost +GRANT USAGE ON *.* TO 'user2'@'localhost' delete from mysql.user where user='mysqltest_1'; delete from mysql.db where user='mysqltest_1'; delete from mysql.tables_priv where user='mysqltest_1'; diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index 5b20354336c..f278a720cd6 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -66,6 +66,16 @@ REVOKE insert,insert (a) on t1 from mysqltest_1@localhost; GRANT references on t1 to mysqltest_1@localhost; show grants for mysqltest_1@localhost; select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1"; +grant all on test.* to user1@localhost with grant option; +revoke all on test.* from user1@localhost; +show grants for user1@localhost; +revoke grant option on test.* from user1@localhost; +show grants for user1@localhost; +grant all on test.t1 to user2@localhost with grant option; +revoke all on test.t1 from user2@localhost; +show grants for user2@localhost; +revoke grant option on test.t1 from user2@localhost; +show grants for user2@localhost; delete from mysql.user where user='mysqltest_1'; delete from mysql.db where user='mysqltest_1'; delete from mysql.tables_priv where user='mysqltest_1'; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 755a72bec32..fff0883225f 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -3049,6 +3049,8 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) if (test_all_bits(table_access, (TABLE_ACLS & ~GRANT_ACL))) global.append("ALL PRIVILEGES",14); + else if (!(table_access & ~GRANT_ACL)) + global.append("USAGE",5); else { int found= 0;