Documentation Home
MySQL 外壳 8.0  / 第 4 章 MySQL Shell 入门  / 4.3 MySQL Shell 连接  /  4.3.2 使用 Unix 套接字和 Windows 命名管道连接

4.3.2 使用 Unix 套接字和 Windows 命名管道连接

在 Unix 上,满足以下条件时,MySQL Shell 连接默认使用 Unix 套接字:

  • 未指定 TCP 端口。

  • 未指定主机名或等于 localhost

  • --socketor -S选项被指定,有或没有套接字文件的路径 。

如果您指定--socket没有值和等号,或者-S没有值,则使用协议的默认 Unix 套接字文件。如果您指定一个替代 Unix 套接字文件的路径,则使用该套接字文件。

如果指定了主机名但未指定 localhost,则建立 TCP 连接。在这种情况下,如果未指定 TCP 端口,则使用默认值 3306。

在 Windows 上,对于使用经典 MySQL 协议的 MySQL Shell 连接,如果将主机名指定为句点 (.),则 MySQL Shell 使用命名管道进行连接。

  • 如果您使用类似 URI 的连接字符串进行连接,请指定user@.

  • 如果您使用键值对进行连接,请指定 {"host": "."}

  • 如果您使用单独的参数进行连接,请指定 --host=.-h .

默认情况下,使用管道名称MySQL--socket您可以使用该选项或作为类似 URI 的连接字符串的一部分 来指定替代命名管道 。

在类似 URI 的字符串中,必须对 Unix 套接字文件或 Windows 命名管道的路径进行编码,使用百分比编码或用括号将路径括起来。括号消除了对 /目录分隔符等字符进行百分比编码的需要。如果 Unix 套接字文件的路径包含在类似 URI 的字符串中作为查询字符串的一部分,则前导斜杠必须进行百分号编码,但如果它替换主机名,则前导斜杠不得进行百分号编码,如图所示在以下示例中:

mysql-js> \connect user@localhost?socket=%2Ftmp%2Fmysql.sock
mysql-js> \connect user@localhost?socket=(/tmp/mysql.sock)
mysql-js> \connect user@/tmp%2Fmysql.sock 
mysql-js> \connect user@(/tmp/mysql.sock)

仅在 Windows 上,命名管道必须以字符\\.\作为前缀,并使用百分比编码进行编码或用括号括起来,如以下示例所示:

(\\.\named:pipe)
\\.\named%3Apipe
重要的

在 Windows 上,如果一个或多个 MySQL Shell 会话使用命名管道连接到 MySQL Server 实例并且您需要关闭服务器,则必须首先关闭 MySQL Shell 会话。仍以这种方式连接的会话会导致服务器在关闭过程中挂起。如果确实发生这种情况,请退出 MySQL Shell,服务器将继续关闭过程。

有关使用 Unix 套接字文件和 Windows 命名管道连接的更多信息,请参阅使用命令选项连接到 MySQL 服务器使用类似 URI 的字符串或键值对连接到服务器