#
# REVOKE DENY tests
#
CREATE TABLE t1 (a INT, b INT);
CREATE PROCEDURE p1() BEGIN SET @x=1; END;
$$
CREATE FUNCTION f1() RETURNS INT RETURN1;
$$
CREATE PACKAGE pkg1
PROCEDURE p1();
FUNCTION f1() RETURNS INT;
END;
$$
CREATE PACKAGE BODY pkg1
PROCEDURE p1() BEGIN SET @pkg=2; END;
FUNCTION f1() RETURNS INT BEGIN RETURN2; END;
END;
$$
CREATE USER u@localhost;
GRANT ALL PRIVILEGES ON *.* to u@localhost;
PREPARE show_denies FROM "SELECT IF(JSON_EXTRACT(Priv, '$.denies') IS NULL OR JSON_LENGTH(JSON_EXTRACT(Priv, '$.denies')) = 0, 'no entries', JSON_PRETTY(JSON_EXTRACT(Priv, '$.denies'))) AS denies FROM mysql.global_priv WHERE User='u' AND Host='localhost'";
#
# Global
#
DENY SELECT ON *.* TO u@localhost;
REVOKE DENY SELECT ON *.* FROM u@localhost;
EXECUTE show_denies;
denies
no entries
#
# Database
#
DENY INSERT ON test.* TO u@localhost;
REVOKE DENY INSERT ON test.* FROM u@localhost;
EXECUTE show_denies;
denies
no entries
# Second revoke should error
REVOKE DENY INSERT ON test.* FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost'
# Revoke with existing GRANT without existing DENY
GRANT INSERT ON test.* TO u@localhost;
REVOKE DENY INSERT ON test.* FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost'
REVOKE INSERT ON test.* FROM u@localhost;
#
# Table
#
DENY UPDATE ON test.t1 TO u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT ALL PRIVILEGES ON *.* TO `u`@`localhost`
DENY UPDATE ON `test`.`t1` TO `u`@`localhost`
# END SHOW GRANTS
REVOKE DENY UPDATE ON test.t1 FROM u@localhost;
EXECUTE show_denies;
denies
no entries
# Second revoke should error
REVOKE DENY UPDATE ON test.t1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on table 't1'
# Revoke with existing GRANT without existing DENY
GRANT UPDATE ON test.t1 TO u@localhost;
REVOKE DENY UPDATE ON test.t1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on table 't1'
REVOKE UPDATE ON test.t1 FROM u@localhost;
#
# Column
#
DENY SELECT (a) ON test.t1 TO u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT ALL PRIVILEGES ON *.* TO `u`@`localhost`
DENY SELECT (`a`) ON `test`.`t1` TO `u`@`localhost`
# END SHOW GRANTS
REVOKE DENY SELECT (a) ON test.t1 FROM u@localhost;
EXECUTE show_denies;
denies
no entries
# Second revoke should error
REVOKE DENY SELECT (a) ON test.t1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on table 't1'
# Revoke with existing GRANT without existing DENY
GRANT SELECT(a) ON test.t1 TO u@localhost;
REVOKE DENY SELECT (a) ON test.t1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on table 't1'
REVOKE SELECT(a) ON test.t1 FROM u@localhost;
#
# Procedure
#
DENY EXECUTE ON PROCEDURE test.p1 TO u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT ALL PRIVILEGES ON *.* TO `u`@`localhost`
DENY EXECUTE ON PROCEDURE `test`.`p1` TO `u`@`localhost`
# END SHOW GRANTS
REVOKE DENY EXECUTE ON PROCEDURE test.p1 FROM u@localhost;
EXECUTE show_denies;
denies
no entries
# Second revoke should error
REVOKE DENY EXECUTE ON PROCEDURE test.p1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on routine 'p1'
# Revoke with existing GRANT without existing DENY
GRANT EXECUTE ON PROCEDURE test.p1 TO u@localhost;
REVOKE DENY EXECUTE ON PROCEDURE test.p1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on routine 'p1'
REVOKE EXECUTE ON PROCEDURE test.p1 FROM u@localhost;
#
# Function
#
DENY EXECUTE ON FUNCTION test.f1 TO u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT ALL PRIVILEGES ON *.* TO `u`@`localhost`
DENY EXECUTE ON FUNCTION `test`.`f1` TO `u`@`localhost`
# END SHOW GRANTS
REVOKE DENY EXECUTE ON FUNCTION test.f1 FROM u@localhost;
EXECUTE show_denies;
denies
no entries
# Second revoke should error
REVOKE DENY EXECUTE ON FUNCTION test.f1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on routine 'f1'
# Revoke with existing GRANT without existing DENY
GRANT EXECUTE ON FUNCTION test.f1 TO u@localhost;
REVOKE DENY EXECUTE ON FUNCTION test.f1 FROM u@localhost; ERROR42000: There is no such grant defined for user 'u' on host 'localhost' on routine 'f1'
REVOKE EXECUTE ON FUNCTION test.f1 FROM u@localhost;
#
# REVOKE ALL, GRANT OPTION clears grants and denies
#
DENY SELECT ON test.* TO u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT ALL PRIVILEGES ON *.* TO `u`@`localhost`
DENY SELECT ON `test`.* TO `u`@`localhost`
# END SHOW GRANTS
EXECUTE show_denies;
denies
[
{ "type": "db", "db": "test", "bits": 1
}
]
REVOKE ALL PRIVILEGES, GRANT OPTION FROM u@localhost;
SHOW GRANTS FOR u@localhost;
Grants for u@localhost
GRANT USAGE ON *.* TO `u`@`localhost`
# END SHOW GRANTS
EXECUTE show_denies;
denies
no entries
DEALLOCATE PREPARE show_denies;
DROP USER u@localhost;
DROP PACKAGE BODY pkg1;
DROP PACKAGE pkg1;
DROP FUNCTION f1;
DROP PROCEDURE p1;
DROP TABLE t1;
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.