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

change the structure of mysql.user table

    Details

      Description

      The suggestion:

      Create new table

      CREATE TABLE mysql.global_priv (
        Host char(60) binary DEFAULT '' NOT NULL,
        User char(80) binary DEFAULT '' NOT NULL,
        data JSON,
        UNIQUE(host,user)
      )
      

      The data might looks like

      {
        "SELECT":"Y",
        "SUPER":"N",
        ...
       "plugin":"mysql_native_password",
        ...
      }
      

      and a view:

      CREATE VIEW mysql.user AS SELECT
        Host, User,
        IF(JSON_VALUE(data,"plugin") IN ("mysql_native_password", "mysql_old_password"),
           JSON_VALUE(data, "authentication_string"),"") as Password
        ...
        FROM mysql.global_priv;
      

      the view will show the same data that old mysql.user table had.

      The script mysql_fix_system_tables.sql should create new table and move data over.
      Also it should convert grants on mysql.user to grants on mysql.global_priv.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                serg Sergei Golubchik
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: