MySQL AI User Guide
This topic describes how to grant other users access to a model you create.
This topic has the following sections.
Review AutoML Privileges.
          To share a model you created, you can use the
          ML_MODEL_EXPORT
          and
          ML_MODEL_IMPORT
          routines.
          ML_MODEL_EXPORT
          exports the model to share to a user-defined table that both
          users need the required privileges to access.
          ML_MODEL_IMPORT
          imports the model to the user's model catalog. The other user
          can then run AutoML commands on the imported model.
        
          In the following tasks, the admin user
          gives access to their model to the user1
          user. The trained table, bank_train, is in
          the bank_marketing database.
        
          The admin user needs to export the model to
          share to a user-defined table that both users can access. In
          this use case, the user exports the model to their own model
          catalog.
        
              As the admin user, train and load the
              model to export. See
              Train a Model
              and Load a
              Model.
            
Export the model to a table in the model catalog. Use the assigned session variable for the model handle. If you need to query the model handle, see Work with Model Handles.
mysql> CALL sys.ML_MODEL_EXPORT (model_handle, output_table_name);
              Replace model_handle and
              output_table_name with your own
              values. For example:
            
mysql> CALL sys.ML_MODEL_EXPORT(@bank_model, 'ML_SCHEMA_admin.model_export');Where:
                  @bank_model is the assigned session
                  variable for the model handle of the trained model.
                
                  ML_SCHEMA_admin.model_export is the
                  fully qualified name of the table that contains the
                  training dataset
                  (schema_name.table_name).
                
              Run the SHOW CREATE TABLE command to
              confirm the table was created with the recommended
              parameters for importing. See
              ML_MODEL_IMPORT
              to learn more.
            
mysql> SHOW CREATE TABLE ML_SCHEMA_admin.model_export;
+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                                                                                                                                            |
+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| model_export | CREATE TABLE `model_export` (
  `chunk_id` int NOT NULL AUTO_INCREMENT,
  `model_object` longtext,
  `model_metadata` json DEFAULT NULL,
  PRIMARY KEY (`chunk_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.0527 sec)
          The admin user needs to grant the required
          privileges to user1, so that user can
          access exported model and import it into their own model
          catalog.
        
If not done already, create the other user account (user1). See CREATE USER Statement to learn more.
Run these commands to grant the required privileges to the other user, so they can access the following:
AutoML routines on the MySQL sys schema.
The model catalog for both users.
The database with the trained model.
See AutoML Privileges to learn more.
mysql>GRANT SELECT, EXECUTE ON sys.* TO 'user1'@'%';mysql>GRANT SELECT, ALTER, INSERT, CREATE, UPDATE, DROP, GRANT OPTION ON ML_SCHEMA_user1.* TO 'user1'@'%';mysql>GRANT SELECT, ALTER, INSERT, CREATE, UPDATE, DROP, GRANT OPTION ON ML_SCHEMA_admin.* TO 'user1'@'%';mysql>GRANT SELECT, ALTER, INSERT, CREATE, UPDATE, DROP, GRANT OPTION ON bank_marketing.* TO 'user1'@'%';mysql>GRANT SELECT ON performance_schema.rpd_tables TO 'user1'@'%';mysql>GRANT SELECT ON performance_schema.rpd_table_id TO 'user1'@'%';mysql>GRANT SELECT ON performance_schema.rpd_query_stats TO 'user1'@'%';mysql>GRANT SELECT ON performance_schema.rpd_ml_stats TO 'user1'@'%';
Where:
                  ML_SCHEMA_user1.* and
                  ML_SCHEMA_user1.* gives access to
                  the model catalog for both users.
                
                  bank_marketing is the database that
                  contains the trained table.
                
          The user1 user can now import the exported
          model to their own model catalog.
        
Log in to the DB system as the other user (user1).
              Import the model the admin user
              previously exported into the model catalog for
              user1.
            
mysql> CALL sys.ML_MODEL_IMPORT (model_object, model_metadata, model_handle);
              Replace model_object,
              model_metadata, and
              model_handle with your own
              values. For example:
            
mysql> CALL sys.ML_MODEL_IMPORT(NULL, JSON_OBJECT('schema', 'ML_SCHEMA_admin', 'table', 'model_export'), @bank_export);
                  NULL means that a model from a
                  table is imported, and not a model object.
                
                  JSON_OBJECT sets key-value pairs
                  for the database and table of the exported table to
                  import.
                
                  @bank_export is the assigned
                  session variable for the imported model handle.
                
Load the imported model. Use the assigned session variable set for the imported model handle in the previous command.
mysql> CALL sys.ML_MODEL_LOAD(@bank_export, NULL);
              Optionally, query model_object and
              model_object_size from the model
              catalog for the loaded model to confirm the model imported
              successfully.
            
mysql> SELECT model_object, model_object_size FROM ML_SCHEMA_user1.MODEL_CATALOG WHERE model_handle=@bank_export;
+--------------+-------------------+
| model_object | model_object_size |
+--------------+-------------------+
| NULL         |            331860 |
+--------------+-------------------+
1 row in set (0.0478 sec)
              Confirm the model_object_size is not 0.
            
              Optionally, query chunk_id and
              LENGTH(model_object) from the model
              object catalog for the loaded model to confirm the model
              imported successfully.
            
mysql> SELECT chunk_id, LENGTH(model_object) FROM ML_SCHEMA_user1.model_object_catalog WHERE model_handle=@bank_export;
+----------+----------------------+
| chunk_id | LENGTH(model_object) |
+----------+----------------------+
|        1 |               331860 |
+----------+----------------------+
1 row in set (0.0465 sec)
              Confirm the chunk_id value is 1 and
              LENGTH(model_object) is not 0.
            
          Confirm the user1 user can run AutoML
          commands. The following example generates a table of
          predictions for the imported model.
        
mysql> CALL sys.ML_PREDICT_TABLE(table_name, model_handle, output_table_name), [options]);
          Replace table_name,
          model_handle,
          output_table_name), and
          options with your own values. For
          example:
        
mysql> CALL sys.ML_PREDICT_TABLE('bank_marketing.bank_train', @bank_export, 'bank_marketing.bank_predictions', NULL);Where:
              bank_marketing.bank_train is the fully
              qualified name of the table that contains the training
              dataset
              (schema_name.table_name).
            
              @bank_export is the assigned session
              variable for the imported model handle.
            
              bank_marketing.bank_predictions is the
              fully qualified name of the output table that contains the
              predictions
              (schema_name.table_name).
            
Optionally, use the database with the output table and query a sample.
mysql>USE bank_marketing;mysql>SELECT * FROM bank_predictions limit 5;+-------------------+-----+--------------+---------+-----------+---------+---------+---------+------+-----------+-----+-------+----------+----------+-------+----------+----------+-----+------------+-------------------------------------------------------------------------------+ | _4aad19ca6e_pk_id | age | job | marital | education | default | balance | housing | loan | contact | day | month | duration | campaign | pdays | previous | poutcome | y | Prediction | ml_results | +-------------------+-----+--------------+---------+-----------+---------+---------+---------+------+-----------+-----+-------+----------+----------+-------+----------+----------+-----+------------+-------------------------------------------------------------------------------+ | 1 | 30 | management | single | tertiary | no | 149 | yes | no | unknown | 3 | jun | 220 | 2 | -1 | 0 | unknown | no | no | {"predictions": {"y": "no"}, "probabilities": {"no": 0.9965, "yes": 0.0035}} | | 2 | 46 | blue-collar | married | secondary | no | -1400 | yes | no | telephone | 6 | may | 309 | 3 | 355 | 4 | failure | no | no | {"predictions": {"y": "no"}, "probabilities": {"no": 0.9368, "yes": 0.0632}} | | 3 | 33 | entrepreneur | married | secondary | no | -118 | yes | yes | unknown | 27 | may | 421 | 3 | -1 | 0 | unknown | no | no | {"predictions": {"y": "no"}, "probabilities": {"no": 0.9593, "yes": 0.0407}} | | 4 | 43 | blue-collar | married | secondary | no | 2160 | no | no | cellular | 8 | sep | 261 | 1 | 98 | 1 | success | yes | yes | {"predictions": {"y": "yes"}, "probabilities": {"no": 0.1266, "yes": 0.8734}} | | 5 | 38 | management | married | tertiary | no | 3452 | no | no | cellular | 13 | aug | 132 | 2 | -1 | 0 | unknown | no | no | {"predictions": {"y": "no"}, "probabilities": {"no": 0.969, "yes": 0.031}} | +-------------------+-----+--------------+---------+-----------+---------+---------+---------+------+-----------+-----+-------+----------+----------+-------+----------+----------+-----+------------+-------------------------------------------------------------------------------+ 5 rows in set (0.0425 sec)
Review Machine Learning Use Cases to create machine learning models with sample datasets.