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 及更高版本。