我正在使用一个 MySQL 调整脚本,该脚本又使用本地驱动器上的套接字 (.sock) 文件连接到 MySQL。尽管我在这台服务器上有一个 MySQL 副本,但是,我想要使用的 MySQL 实际上是在另一台机器上——在我的普通应用程序中,DB_HOST 是一个不同的 IP 地址,等等。
那么...有没有办法创建一个指向远程 MySQL 服务器的套接字文件,该服务器位于不同的 IP 上?
我正在使用一个 MySQL 调整脚本,该脚本又使用本地驱动器上的套接字 (.sock) 文件连接到 MySQL。尽管我在这台服务器上有一个 MySQL 副本,但是,我想要使用的 MySQL 实际上是在另一台机器上——在我的普通应用程序中,DB_HOST 是一个不同的 IP 地址,等等。
那么...有没有办法创建一个指向远程 MySQL 服务器的套接字文件,该服务器位于不同的 IP 上?
是的,我们称它们为网络连接。您在 Internet 上所做的一切都使用它们。
除了
AF_UNIX
您所指的套接字之外,还有AF_INET
套接字和AF_INET6
套接字,它们分别建立 IPv4 和 IPv6 连接。还有一些其他类型,但您可能不关心像 AppleTalk 这样古老的东西……与 Unix 套接字不同,网络套接字在文件系统上没有相应的文件。它们只能使用套接字 API 在应用程序代码中创建(请参阅 socket(7) 手册页)。
在调整脚本的情况下,它们应该有命令行选项,允许您指定要连接的远程主机。例如,流行的mysqltuner.pl脚本接受
--host
并--port
指定远程主机。(虽然指定端口不是必需的,除非您将其从默认值 3306 移开)。USAGE
您仍然需要具有MySQL 服务器权限的用户名和密码,并且防火墙必须允许您访问。socat - 多用途继电器: http: //www.dest-unreach.org/socat/
上面的“socat”答案会做你想做的,但你最好使用本机 TCP 功能,而不是尝试重定向 UNIX 套接字,它专为在单个本地计算机上的高性能 IPC 而设计。
相比之下,使用 TCP 就像拿起电话给某人打电话,而重定向套接字更像是让朋友拿起电话给他们打电话,每次说话时都将书面笔记交给对方。这是不必要的并发症。