在Mac上使用MAMP获取“db:SQLSTATE [HY000] [2002] Connection refused”错误

时间:2014-05-24 01:55:16

标签: php mysql macos localhost

我正在尝试运行此PHP数据库Search and Replace Script的CLI版本,但我认为这是与Mac OS X和MAMP相关的更一般的MySQL问题。每当我尝试在本地运行CLI脚本时,都会收到以下错误:

db: SQLSTATE[HY000] [2002] Connection refused

这是我正在运行的命令:

./srdb.cli.php -h 127.0.0.1 -u root -n mydbname -proot -c utf\-8 -s mywebsite.com -r dev.mywebsite.com

我尝试了什么

  • 我可以使用这些设置连接到mysql,没问题,使用mysql -u root -proot等...
  • 为localhost交换127.0.0.1会产生同样的错误。
  • 我所有的my.cnf文件都是空白的。
  • Apache和MySQL运行良好。
  • 我已成功在另一台运行MAMP的Mac上复制此问题

我使用的是mysql:/ Applications / MAMP / Library / bin / mysql

这个php:/ Applications / MAMP / bin / php / php5.3.28 / bin / php

有人有什么想法吗?谢谢!

修改

以下是显示脚本如何连接到MySQL的源代码: https://github.com/interconnectit/Search-Replace-DB/blob/master/srdb.cli.php

反过来导入这个:

https://github.com/interconnectit/Search-Replace-DB/blob/master/srdb.class.php

3 个答案:

答案 0 :(得分:9)

正如我在评论中所述,很可能你没有运行你认为运行的PHP二进制文件。即使MAMP php二进制文件在您的路径中,srdb.cli.php中的shebang行也会读取#!/usr/bin/php,并指向Apple提供的php二进制文件。

因此,如果您使用MAMP php二进制文件的完整路径调用脚本,则应避免出现此问题:

/Applications/MAMP/bin/php/php5.3.28/bin/php srdb.cli.php -h 127.0.0.1 -u root -n mydbname -proot -c utf\-8 -s mywebsite.com -r dev.mywebsite.com

另一种解决方案可能是用以下方法替换shebang线:

#!/usr/bin/env php

仅当MAMP二进制文件位于/usr/bin前面的$ PATH中时才有效。但是,使用#!/usr/bin/env php可确保您始终使用相同的二进制文件,无论您是通过./srdb.cli.php还是php srdb.cli.php调用脚本。

答案 1 :(得分:0)

停止mysql:

sudo service mysql stop

然后启动它:

sudo service mysql start

它解决了问题

答案 2 :(得分:0)

要添加到z80crew的出色解决方案中,对于不熟悉/不喜欢更改路径变量的其他任何人,请为两者指定MAMP php二进制文件的完整位置路径,并搜索-由互连提供的cli脚本中的replace-db脚本为我解决了这个问题。我将字符串搜索并用引号替换。我还通过以下方式增加了wp-config.php中的php超时限制:set_time_limit(3000);

在传递给脚本的选项和wp-config.php文件中的内容之间我与服务器名称一致(在wp-config中使用localhost,在脚本中也使用localhost)

/Applications/MAMP/bin/php/php7.4.2/bin/php /Applications/MAMP/htdocs/test/Search-Replace-DB-master/srdb.cli.php -h localhost -u root -proot --port 8889 -n test -s "http://olddomain.com" -r "http://localhost:8888/test" -v true