如何通过管道将 PHP 应用程序连接到 MySQL?

Posted

技术标签:

【中文标题】如何通过管道将 PHP 应用程序连接到 MySQL?【英文标题】:How to connect a PHP app to MySQL via pipes? 【发布时间】:2020-01-11 13:10:19 【问题描述】:

我发现可以通过their documentation of mysqli 中的管道将 php 连接到 MySQL,但我终其一生都找不到任何人解释需要什么。

host 参数声明:

如果可能,将使用管道而不是 TCP/IP 协议。

但是什么时候“可能”呢?我有自己的机器,我绝对有必要的权限来实现这一点,我只是不知道怎么做。检查host_info 时,连接到主机localhost 报告“Localhost via UNIX socket”。

尝试关注该页面上的一条(被否决的)评论,并连接到主机 .,并将 socket 参数设置为 mysql,会导致 2002 连接错误。

我如何告诉它(总是)通过管道连接?

【问题讨论】:

【参考方案1】:

今天我遇到了同样的问题,在 Windows 上解决这个问题需要很多时间。 我可以使用以下代码建立命名管道连接:

$connection = new mysqli('.', 'user', 'pass', 'database', null, '\\\\.\\pipe\\name_of_pipe');

我要连接的服务器具有以下配置:

[mysqld]
skip-networking
enable-named-pipe
socket=name_of_pipe

使用'127.0.0.1''localhost'NULL 作为主机名不起作用。此外,您必须指定命名管道的路径,而不仅仅是管道的名称。 不幸的是,这里的 PHP 文档有点弱......

【讨论】:

【参考方案2】:

命名管道只能在 Windows 下工作。

还有

每当您指定“localhost”或“localhost:port”作为服务器时,MySQL 客户端库将覆盖它并尝试连接到本地套接字(Windows 上的命名管道)。如果要使用 TCP/IP,请使用“127.0.0.1”而不是“localhost”。如果 MySQL 客户端库尝试连接到错误的本地套接字,您应该在 PHP 配置中设置正确的路径,并将服务器字段留空。

实际的PHP文档中没有提到,但应该还是有效的。

【讨论】:

以上是关于如何通过管道将 PHP 应用程序连接到 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 应用程序无法通过命名管道/套接字连接到本地 MySQL 服务器 --- Windows 7 x64

如何将 android 应用程序连接到 MYSQL 服务器并从中检索数据?

如何创建允许 PHP 通过 SSL 连接到 MySQL 的证书?

如何测试通过xampp连接到mysql db的php登录?

如何通过 ssh 将 php 应用程序与远程 mysql 数据库连接起来

如何将.net控制台应用程序客户端连接到Azure数据工厂