文档首页
MySQL Connector/ODBC 开发人员指南
相关文档 下载此手册
PDF (US Ltr) - 1.7Mb
PDF (A4) - 1.7Mb


5.9 身份验证选项

Connector/ODBC 支持不同的身份验证方法,包括

  • 使用 MySQL 用户名和密码的标准身份验证,例如 caching_sha2_password.

  • 用于无密码身份验证的 Kerberos 身份验证协议。有关 Kerberos 身份验证的更多信息,请参见 Kerberos 可插拔身份验证.

    在 Connector/ODBC 8.0.26 中为 Linux 客户端添加了支持,在 8.0.27 中为 Windows 客户端添加了支持。

  • 通过使用 PASSWORD1PASSWORD 的别名)、PASSWORD2PASSWORD3 连接选项实现多因素身份验证 (MFA)。此外还有 PWD1PWD2PWD3 别名。

    在 Connector/ODBC 8.0.28 中添加了支持。

  • 支持基于 FIDO 的身份验证,并且 Connector/ODBC 支持基于 FIDO 的 WebAuthn 可插拔身份验证 插件。有关安装要求和实现细节,请参见一般 WebAuthn 可插拔身份验证 文档。

    注意

    对 authentication_webauthn 插件的支持是在 Connector/ODBC 8.2.0 中添加的。对 authentication_fido 插件的支持是在 8.0.29 中添加的,在 8.2.0 中已弃用,并在 8.4.0 中删除。

    回调使用示例

    // SQL_DRIVER_CONNECT_ATTR_BASE is not defined in all driver managers.
    // Therefore use a custom constant until it becomes a standard.
    #define MYSQL_DRIVER_CONNECT_ATTR_BASE 0x00004000
    
    // Custom constants used for callback
    #define CB_FIDO_GLOBAL MYSQL_DRIVER_CONNECT_ATTR_BASE + 0x00001000
    #define CB_FIDO_CONNECTION MYSQL_DRIVER_CONNECT_ATTR_BASE + 0x00001001
    
    // Usage example
    // Callback function inside code:
    void user_callback(const char* msg)
    {
       // Do something ...
    }
    SQLHENV henv = nullptr;
    SQLAllocHandle(SQL_HANDLE_ENV, nullptr, &henv);
    
    // Set the ODBC version to 3.80 otherwise the custom constants don't work
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,                               
    (SQLPOINTER)SQL_OV_ODBC3_80, 0);
    
    SQLHDBC hdbc = nullptr;
    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    
    // CB_FIDO_X is either CB_FIDO_GLOBAL or CB_FIDO_CONNECTION
    SQLSetConnectAttr(hdbc, CB_FIDO_X, &user_callback, SQL_IS_POINTER);
    
    SQLDriverConnect(hdbc, hwnd, conn_str, ....);