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平台上使用命名管道访问MySQLNamedPipeSocketFactory
作为一个插件插座工厂。如果不使用namedPipePath
属性的默认值“\ \ \管\ MySQL。”
使用。如果你使用NamedPipeSocketFactory
,将忽略JDBC URL中的主机名和端口号值。要启用此功能,请设置socketFactory
属性:
socketFactory = com.mysql.cj.protocol.NamedPipeSocketFactory
用下面的连接URL设置这个属性以及命名管道的路径:
jdbc: mysql: / / /测试? socketFactory = com.mysql.cj.protocol.NamedPipeSocketFactory&namedPipePath = \ \ \ \ MySQL80管
要创建您自己的套接字工厂,请遵循中的示例代码com.mysql.cj.protocol.NamedPipeSocketFactory
或com.mysql.cj.protocol.StandardSocketFactory
。
另一种方法是在连接url中使用以下两个属性在Windows平台上建立命名管道连接:
(协议=管)
用于命名管道(该属性的默认值为tcp
)。(路径=
用于指定管道的路径。默认值为path_to_pipe
)\ \ \ \管MySQL
。
的”address-equals”或”键-值”主机规范的形式(参见单台主机)极大地简化了Windows上命名管道连接的URL。例如,使用的默认命名管道”\ \ \ \管MySQL
,”指定:
jdbc: mysql: / /地址=(协议=管)/测试
的自定义命名管道”\ \ \ \ MySQL80管
”:
jdbc: mysql: / /地址=(协议=管)(path = \ \ \管\ MySQL80) /测试
与(协议=管)
,NamedPipeSocketFactory
将自动被选中。
只有当连接到JDBC驱动程序运行的同一物理机器上的MySQL服务器时,命名管道才能工作。在简单的性能测试中,命名管道访问比标准TCP/IP访问快30%-50%。但是,这种情况因系统而异,命名管道在许多Windows配置中比TCP/IP慢。