使用具名管道連線至伺服器的用戶端,僅會被授予對具名管道的最低權限。但是,Connector/J 只有在被授予對它們的完全存取權時才能使用具名管道。作為一種變通方法,Connector/J 要連線的 MySQL Server 必須使用系統變數 named_pipe_full_access_group
啟動,該變數指定一個 Windows 本機群組,其中包含用戶端應用程式 JVM (因此 Connector/J) 正在執行的使用者;如需更多詳細資訊,請參閱 named_pipe_full_access_group
的說明。
具名管道不支援 X Protocol 連線。
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
。
主機規格的「address-equals」或「key-value」形式(詳細資訊請參閱單一主機)大大簡化了 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 慢。