何时使用 MySQL 套接字以及何时使用主机:端口?

何时使用 MySQL 套接字以及何时使用主机:端口?

许多应用程序允许我使用用户名、密码、主机和端口连接到 Mysql。有些允许我配置套接字而不是host:port

其中一个相对于另一个有什么明显的好处吗?我可以想象套接字仅当 MySQL 在同一台机器上时才有效。是这样吗?如果是这样,使用该套接字而不是连接到 有什么好处吗localhost:3306

我不太熟悉网络和套接字的来龙去脉,所以也许我完全错过了一些关键信息,我的问题简直是愚蠢的;如果是这样,你能解释一下我错过了什么吗?

答案1

嗯,很简单。

套接字是一种基于文件的通信,您无法从另一台机器访问套接字。

另一方面,端口向全世界开放(取决于配置),您可以使用主机+端口组合从其他机器访问 mysql。

此外,据我了解,套接字只是主机+端口的组合,只是文件格式不同。因此,我认为使用它们没有任何明显的好处(就我所知)。

虽然我个人更喜欢使用主机+端口,因为我的代码变得更加灵活,因为我可以将它移动到另一台机器,而不需要做太多的改变。

复制粘贴自一些旧帖子

Unix 套接字速度稍快一些,因为没有 tcp 开销。如果您意识到这种性能损失是服务器负载的问题,那么您可能不会意识到这一点。如果您的服务器负载不是很高,那么您不会意识到这一点。

如果您使用 Jails (FreeBSD) 或其他虚拟化技术将 MySQL 服务器与 Web 服务器分开,则通常会使用 tcp/ip 设置而不是套接字。不过防火墙规则需要限制访问。

您需要确定您的系统是否负载很重,因此套接字是必须的,或者您可以专注于良好的系统设计(分离服务),那么 tcp/ip 解决方案会更好。

因此,请简短回答:

是的,性能上确实有差异,套接字速度更快。如果您的服务器负载不高,只需选择更适合您系统设计的方案即可。

答案2

...十年后,

GCP MySQL 有一个 SQL 代理,通过它您可以使用来自 VM 的套接字连接到不同 VM 上的 MySQL 服务器。

使用 Cloud SQL Auth 代理进行连接

相关内容