在 Unix 上,当满足以下条件时,MySQL Shell 连接默认使用 Unix 套接字
未指定 TCP 端口。
未指定主机名或主机名等于
localhost
。指定了
--socket
或-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 服务器实例,并且您需要关闭服务器,则必须首先关闭 MySQL Shell 会话。仍然以这种方式连接的会话可能会导致服务器在关闭过程中挂起。如果发生这种情况,请退出 MySQL Shell,服务器将继续关闭过程。
有关使用 Unix 套接字文件和 Windows 命名管道进行连接的更多信息,请参阅 使用命令选项连接到 MySQL 服务器 和 使用类似 URI 的字符串或键值对连接到服务器。