3.5.10 使用 Unix 域套接字连接

Connector/J 本身不支持使用 Unix 域套接字连接到 MySQL 服务器。但是,可以使用通过可插入套接字工厂提供功能的第 3 方库。这样的自定义工厂应该实现 Connector/J 的 com.mysql.cj.protocol.SocketFactory 接口或遗留 com.mysql.jdbc.SocketFactory接口。当您为 Unix 套接字使用此类自定义套接字工厂时,请遵循以下要求:

  • MySQL 服务器必须配置系统变量 --socket(对于使用 JDBC API 的本机协议连接)或 --mysqlx-socket(对于使用 X DevAPI 的 X 协议连接),它必须包含 Unix 套接字文件的文件路径。

  • 自定义工厂的完全限定类名应该通过连接属性传递给 Connector/J socketFactory。例如,对于 junixsocket 库,设置:

    socketFactory=org.newsclub.net.mysql.AFUNIXDatabaseSocketFactory

    您可能还需要将其他参数作为连接属性传递给自定义工厂。例如,对于 junixsocket 库,提供具有以下属性的套接字文件的文件路径junixsocket.file

    junixsocket.file=path_to_socket_file

  • Fore release 8.0.21 及更早版本:使用 X 协议时,设置连接属性 xdevapi.useAsyncProtocol=false(这是 Connector/J 8.0.12 及更高版本的默认设置)。异步套接字通道不支持 Unix 套接字。当 时xdevapi.useAsyncProtocol=true,该 socketFactory属性将被忽略(连接属性 xdevapi.useAsyncProtocol自 8.0.22 版以来已被弃用)。

笔记

对于 X 协议连接,为 Unix 套接字连接使用自定义套接字工厂的规定仅适用于 Connector/J 8.0.12 及更高版本。