Documentation Home

6.11 使用命名管道连接

重要的

对于 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 慢。