MySQL 8.4 C API Developer Guide
int
mysql_options4(MYSQL *mysql,
               enum mysql_option option,
               const void *arg1,
               const void *arg2)
          mysql_options4() is similar to
          mysql_options() but has an
          extra fourth argument so that two values can be passed for the
          option specified in the second argument.
        
          The following list describes the permitted options, their
          effect, and how arg1 and
          arg2 are used.
        
              MYSQL_OPT_CONNECT_ATTR_ADD (argument
              types: char *, char *)
            
This option adds an attribute key-value pair to the current set of connection attributes to pass to the server at connect time. Both arguments are pointers to null-terminated strings. The first and second strings indicate the key and value, respectively. If the key is empty or already exists in the current set of connection attributes, an error occurs. Comparison of the key name with existing keys is case-sensitive.
              Key names that begin with an underscore
              (_) are reserved for internal use and
              should not be created by application programs. This
              convention permits new attributes to be introduced by
              MySQL without colliding with application attributes.
            
              mysql_options4() imposes a
              limit of 64KB on the aggregate size of connection
              attribute data it accepts. For calls that cause this limit
              to be exceeded, a
              CR_INVALID_PARAMETER_NO
              error occurs. Attribute size-limit checks also occur on
              the server side. For details, see
              Performance Schema Connection Attribute Tables,
              which also describes how the Performance Schema exposes
              connection attributes through the
              session_connect_attrs and
              session_account_connect_attrs
              tables.
            
              See also the descriptions for the
              MYSQL_OPT_CONNECT_ATTR_RESET and
              MYSQL_OPT_CONNECT_ATTR_DELETE options
              in the description of the
              mysql_options() function.
            
              MYSQL_OPT_USER_PASSWORD (argument
              types: unsigned int *, char *)
            
This option specifies the password for a multifactor authentication factor (see Multifactor Authentication).
              The first argument points to an unsigned
              int variable that should have a value of 1, 2,
              or 3 to indicate the factor for which the password is
              being specified. The second argument points to a character
              string that provides the password value.
            
This option was added in MySQL 8.0.27.
A duplicate attribute name was specified.
A key name was empty or the amount of key-value connection attribute data exceeds 64KB limit.
Out of memory.
This example demonstrates the calls that specify connection attributes:
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key1", "value1");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key2", "value2");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key3", "value3");
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_DELETE, "key1");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
        mysql_error(&mysql));
}