Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-40132

DENY entries are absent from the information_schema privilege views

    XMLWordPrintable

Details

    • Not for Release Notes

    Description

      MDEV-14443 CS 13.1.0 e5dffa6a4f3a8df4f5d60192f1f81c65bea19b73 (Optimized, Clang 18.1.3-11) Build 22/06/2026

      CREATE DATABASE d1;
      CREATE TABLE d1.t1 (a INT, b INT);
      CREATE USER u@localhost;
      GRANT SELECT, INSERT ON d1.* TO u@localhost;
      DENY  SELECT ON d1.t1 TO u@localhost;
      DENY  INSERT (b) ON d1.t1 TO u@localhost;
      FLUSH PRIVILEGES;
      # SHOW GRANTS DOES reflect the denies :
      SHOW GRANTS FOR u@localhost;
      Grants for u@localhost
      GRANT USAGE ON *.* TO `u`@`localhost`
      GRANT SELECT, INSERT ON `d1`.* TO `u`@`localhost`
      DENY SELECT, INSERT (`b`) ON `d1`.`t1` TO `u`@`localhost`
      # information_schema.SCHEMA_PRIVILEGES: shows the db grants, no deny:
      SELECT TABLE_SCHEMA, PRIVILEGE_TYPE
      FROM information_schema.SCHEMA_PRIVILEGES
      WHERE GRANTEE="'u'@'localhost'" ORDER BY PRIVILEGE_TYPE;
      TABLE_SCHEMA	PRIVILEGE_TYPE
      d1	INSERT
      d1	SELECT
      # information_schema.TABLE_PRIVILEGES: EMPTY -- the table-level DENY on d1.t1 is invisible
      SELECT TABLE_NAME, PRIVILEGE_TYPE
      FROM information_schema.TABLE_PRIVILEGES
      WHERE GRANTEE="'u'@'localhost'";
      TABLE_NAME	PRIVILEGE_TYPE
      # information_schema.COLUMN_PRIVILEGES: EMPTY -- the column-level DENY is invisible too:
      SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGE_TYPE
      FROM information_schema.COLUMN_PRIVILEGES
      WHERE GRANTEE="'u'@'localhost'";
      TABLE_NAME	COLUMN_NAME	PRIVILEGE_TYPE
      # SELECT on d1.t1 is denied:
      connect  p, localhost, u,, d1;
      SELECT * FROM d1.t1;
      ERROR 42000: SELECT command denied to user 'u'@'localhost' for table `d1`.`t1`
      connection default;
      disconnect p;
      DROP USER u@localhost;
      DROP DATABASE d1;
      

      MTR Test

      CREATE DATABASE d1;
      CREATE TABLE d1.t1 (a INT, b INT);
      CREATE USER u@localhost;
      GRANT SELECT, INSERT ON d1.* TO u@localhost; 
      DENY  SELECT ON d1.t1 TO u@localhost; 
      DENY  INSERT (b) ON d1.t1 TO u@localhost; 
      FLUSH PRIVILEGES;
       
      --echo # SHOW GRANTS DOES reflect the denies :
      SHOW GRANTS FOR u@localhost;
       
      --echo # information_schema.SCHEMA_PRIVILEGES: shows the db grants, no deny:
      SELECT TABLE_SCHEMA, PRIVILEGE_TYPE
        FROM information_schema.SCHEMA_PRIVILEGES
        WHERE GRANTEE="'u'@'localhost'" ORDER BY PRIVILEGE_TYPE;
       
      --echo # information_schema.TABLE_PRIVILEGES: EMPTY -- the table-level DENY on d1.t1 is invisible
      SELECT TABLE_NAME, PRIVILEGE_TYPE
        FROM information_schema.TABLE_PRIVILEGES
        WHERE GRANTEE="'u'@'localhost'";
       
      --echo # information_schema.COLUMN_PRIVILEGES: EMPTY -- the column-level DENY is invisible too:
      SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGE_TYPE
        FROM information_schema.COLUMN_PRIVILEGES
        WHERE GRANTEE="'u'@'localhost'";
       
      --echo # SELECT on d1.t1 is denied:
      connect (p, localhost, u,, d1);
      --error ER_TABLEACCESS_DENIED_ERROR
      SELECT * FROM d1.t1;
      connection default;
      disconnect p;
       
      DROP USER u@localhost;
      DROP DATABASE d1;
      

      Attachments

        Issue Links

          Activity

            People

              wlad Vladislav Vaintroub
              ramesh Ramesh Sivaraman
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0d
                  0d
                  Logged:
                  Time Spent - 0.5h
                  0.5h

                  Git Integration

                    Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.