对于 MySQL 8.0.14 及更高版本、5.7.25 及更高版本以及 5.6.43 及更高版本,命名管道的最小权限被授予使用它们连接到服务器的客户端。然而,Connector/J 只有在被授予完全访问权时才能使用命名管道。作为解决方法,Connector/J 想要连接的 MySQL 服务器必须使用系统变量启动,该变量
named_pipe_full_access_group
指定一个 Windows 本地组,其中包含执行客户端应用程序 JVM(以及 Connector/J)的用户;有关详细信息,请参阅说明
named_pipe_full_access_group
。
X 协议连接不支持命名管道。
Connector/J 还支持在 Windows 平台上使用命名管道访问 MySQL,并将其
NamedPipeSocketFactory
作为插件套接字工厂。如果您不使用namedPipePath
属性,'\\.\pipe\MySQL'
则使用默认值。如果使用NamedPipeSocketFactory
,JDBC URL 中的主机名和端口号值将被忽略。要启用此功能,请设置
socketFactory
属性:
socketFactory=com.mysql.cj.protocol.NamedPipeSocketFactory
使用以下连接 URL 设置此属性以及命名管道的路径:
jdbc:mysql:///test?socketFactory=com.mysql.cj.protocol.NamedPipeSocketFactory&namedPipePath=\\.\pipe\MySQL80
要创建您自己的套接字工厂,请遵循
com.mysql.cj.protocol.NamedPipeSocketFactory
或
中的示例代码com.mysql.cj.protocol.StandardSocketFactory
。
另一种方法是在连接 URL 中使用以下两个属性在 Windows 平台上建立命名管道连接:
(protocol=pipe)
对于命名管道(属性的默认值为tcp
)。(path=
对于命名管道的路径。路径的默认值为path_to_pipe
)\\.\pipe\MySQL
.
主机规范的“地址等于”或“键值”
形式(有关详细信息,请参阅
单一主机)极大地简化了 Windows 上命名管道连接的 URL。例如,要使用
“ \\.\pipe\MySQL
, ”的默认命名管道,只需指定:
jdbc:mysql://address=(protocol=pipe)/test
要使用
“ \\.\pipe\MySQL80
”的自定义命名管道:
jdbc:mysql://address=(protocol=pipe)(path=\\.\pipe\MySQL80)/test
使用(protocol=pipe)
,将
NamedPipeSocketFactory
自动选择。
命名管道仅在连接到运行 JDBC 驱动程序的同一台物理机器上的 MySQL 服务器时才起作用。在简单的性能测试中,命名管道访问比标准 TCP/IP 访问快 30%-50%。但是,这因系统而异,在许多 Windows 配置中,命名管道比 TCP/IP 慢。