PHP / 连接到 Sphinx 需要用户名/密码

PHP / connection to Sphinx requires username / password

我目前正在尝试通过 PDO 或 MySqli 连接器连接到 Sphinx 以使用 SphinxQL,但是,尽管 Sphinx 没有 username/password 设置并且我应该能够在不使用此类设置的情况下进行连接,但我收到 user/pass 错误:

Warning: mysqli_connect(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO)

我的连接尝试如下(本例为mysqli:)

$con = mysqli_connect('localhost', '', '', '', '9306');

上面的本地主机与 Mysql 一起使用,我也尝试了 127.0.0.1 但没有成功(这给了我一个连接被拒绝的错误)。

我的 sphinx conf 如下所示:

listen          = 9306:mysql41

searchd 是 运行,通过 shell 的连接正常工作:

[root@localhost vagrant]# mysql -h0 -P 9306
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 Server version: 2.2.11-id64-release (95ae9a6)

正如你在上面看到的,我使用的是 Sphinx v.2.2.11

为了以防万一,我也重新检查了端口分配:

[root@localhost vagrant]# netstat -tulpn | grep LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1475/master
tcp        0      0 127.0.0.1:9306          0.0.0.0:*               LISTEN      21599/searchd
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4013/mysqld

感谢任何帮助。

有时会发生奇怪的事情,没有合理的解释。如前所述,我在 windows 10 主机上使用 vagrant (Centos 7.5)。无论如何,连接都不起作用。让它休息一天后,我的电脑进入 "sleep" 模式。第二天,撤销系统后一切正常。我能说什么¯_(ツ)_/¯。问题解决了。

我可能会迟到,但我遇到了同样的问题并且我有解决方案:)

而不是

$con = mysqli_connect('localhost', '', '', '', '9306');

这样用

$con = mysqli_connect('localhost:9306', '', '', '');

它很可能会起作用:)

我在 Sphinx Search 3.3.1 和 mysql 8.0 上遇到了同样的问题。 以上解决了我的问题。