MAMP “无法启动 Apache,因为端口正在使用中。” AND“无法通过 /tmp/mysql.sock 连接到本地 MySQL 服务器

Posted

技术标签:

【中文标题】MAMP “无法启动 Apache,因为端口正在使用中。” AND“无法通过 /tmp/mysql.sock 连接到本地 MySQL 服务器【英文标题】:MAMP "Apache couldn't be started because port is in use." AND "Can’t connect to local MySQL server through /tmp/mysql.sock 【发布时间】:2015-02-07 21:00:10 【问题描述】:

重新启动 MAMP 后,我注意到 mysql 服务器复选框没有像往常那样变成绿色。我再次单击“启动服务器”并收到一条消息,指出“无法启动 Apache,因为端口 8888 正在被其他软件使用。”很奇怪,因为我没有对系统或应用程序进行任何更改,也没有安装任何更新。我打开 Chrome 并输入了我在本地开发的网站的 url,它显示没有问题。但是,当我尝试使用虚拟用户帐户登录该站点时,我收到“SQLSTATE [HY000] [2002] 无法通过套接字连接到本地 MySQL 服务器'/Applications/MAMP/tmp/mysql/mysql.sock' (2)”消息。

关于第一个问题(另一个程序正在使用 Apache 端口),我打开了终端和 >> sudo lsof -i -P | grep -i "listen" 以查看会显示哪些端口。当 MAMP 关闭时,控制台输出为

launchd 1 root 23u IPv6 0x156733646a84db9h 0t0 TCP *:5900 (LISTEN) launchd 1 root 24u IPv4 0x156733646a84eba8 0t0 TCP *:5900 (LISTEN) launchd 1 root 28u IPv6 0x156733646a84d75u 0t0 TCP localhost:631 (LISTEN) launchd 1 root 29u IPv4 0x156733646a84e3bu 0t0 TCP localhost:631 (LISTEN) launchd 1 root 31u IPv6 0x156733646a84d31u 0t0 TCP *:22 (LISTEN) launchd 1 root 32u IPv4 0x156733646a857ba5 0t0 TCP *:22 (LISTEN) kdc 96 root 6u IPv6 0x156733646a84cedt 0t0 TCP *:88 (LISTEN) kdc 96 root 8u IPv4 0x156733646c2a9ba5 0t0 TCP *:88 (LISTEN) imagent 270 userhomedirectory 7u IPv4 0x156733646a1a13bb 0t0 TCP *:52216 (LISTEN) EEventMan 279 userhomedirectory 4u IPv4 0x156733646a8573bb 0t0 TCP *:2968 (LISTEN) MAMP 运行时的输出是(上面列出的所有内容)+:

httpd 28772 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28786 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28790 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28791 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28792 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28793 userhomedirectory 5u IPv6 0x156733646a84b55f 0t0 TCP *:8888 (LISTEN) httpd 28794 userhomedirectory 5u IPv6 0x169041156a84b55f 0t0 TCP *:8888 (LISTEN)

因此,端口 8888 仅在 MAMP 启动时使用,这也告诉我 Web 服务器实际上已连接。所以我不明白为什么我会收到 Apache 端口错误。

无论如何,接下来我打开了 Activity Monitor 并杀死了每个正在运行的 httpd 和 mysqld 进程并重新启动了 MAMP,但是问题仍然存在。 mysqld 进程在我第一次杀死后就再也没有出现过。

然后,我搜索了 SO。我遇到了关于 MAMP PRO 的 a post 并决定尝试建议的解决方案,但无济于事。 this post 建议删除并重新安装整个应用程序也是如此。

现在我无法判断是 mysql 错误导致了 apache 错误还是 apache 错误导致了 mysql 错误。因此,我搜索并尝试了几种有关 mysql 错误的解决方案,包括来自this post 和this post 的建议,但没有一个对我有用。我的意思是,我确实尝试了这些页面上的每一个建议,从发布的答案到 cmets。

我还尝试重新启动计算机,更改 apache、nginx 和 mysql 端口配置设置,从 apache 切换到 nginx,从终端加载 MAMP 的 MySql,使用套接字配置创建一个 my.cnf 文件。这些都没有奏效。

有人有这方面的经验吗?是 Apache 端口错误还是 MySQL 套接字错误?还是完全不同的东西?考虑到系统或应用程序中没有安装更新或更改任何内容,这可能是什么原因造成的?

提前致谢。

* **2014 年 12 月 10 日编辑 *** 所以我整晚都在玩这个。我重新安装了几次应用程序。安装了一些更新,甚至将我的笔记本电脑的 MAMP 设置复制到我的桌面上。但是,我仍然遇到同样的错误。然后我将 MAMP 的文档根目录改回默认的 Mac HD -> Applications -> MAMP -> htdocs 并且它起作用了!我之前设置为/Users/userhomedirectory/Sites

我将其发布为编辑而不是答案,因为问题仍然存在。将文档根目录改回Users/myhomedirectory/Sites 会得到与以前相同的错误消息,因此我的解决方案更像是一种解决方法。希望这会为某人点亮一个灯泡,因为我仍然无法弄清楚可能是什么原因和/或解决方案。

【问题讨论】:

我刚刚在我的机器上验证了这一点。完全相同的问题。使用默认的 htdocs 目录有效,否则会出现上述端口错误。 【参考方案1】:

更改 MAMP Nginx 端口 70 等

sudo lsof -nP -i4TCP:8888 | grep LISTEN

然后杀死PID例如:如果端口:8888

sudo lsof -nP -i4TCP:8888 | grep LISTEN
---
httpd     15030 yourusername    4u  IPv6 0x5fdd0f41d81c1dd3      0t0  TCP *:8888 (LISTEN)
httpd     15031 yourusername    4u  IPv6 0x5fdd0f41d81c1dd3      0t0  TCP *:8888 (LISTEN)
httpd     15032 yourusername    4u  IPv6 0x5fdd0f41d81c1dd3      0t0  TCP *:8888 (LISTEN)
--
sudo kill -9 15030
sudo kill -9 15031
sudo kill -9 15032

【讨论】:

【参考方案2】:

尝试进入活动监视器并搜索 Mysqld 和 Httpd 并结束它们的所有进程。然后重新启动 Mamp。 这对我有用

【讨论】:

【参考方案3】:

我不知道它是否会帮助某人......但这对我有用:

sudo apachectl stop :-)

来自https://***.com/a/24287496/1420009

【讨论】:

【参考方案4】:

我的意思不是微不足道的,但是当这种情况发生在我身上时,我开始尝试这里的一些建议(权限等),但是当我刚刚重新启动计算机时,它之后就可以工作了。所以只是提醒在尝试其他方法之前尝试重新启动。

【讨论】:

【参考方案5】:

转到MAMP配置并将端口地址8888更改为任何其他地址

MAMP->Preferences->Ports->Apache Port

我认为它会很好用

【讨论】:

这就是我所说的“...更改端口配置”的意思。我已将其更改为“将 Web 和 MySQL 端口设置为 80 和 3306”选项,但这不起作用。然后我将 Apache 端口更改为 8889,将 MySQL 端口更改为 8888。这也不起作用。然后我将 Apache 端口更改为 7888,将 nginx 端口更改为 8888,但这也不起作用。 Apache 在哪个端口上都是 Apache Port 错误消息中列出的端口。【参考方案6】:

如果没有 MySQL 实例正在运行,则可能是权限问题。 右键单击图标-> run as administrator

【讨论】:

【参考方案7】:

就像 Nathan Rutman 一样,这对我来说是一个权限问题。我得到了上面显示的相同错误 - Apache couldn't be started because port 8888 is in use by some other software. ... MySQL 服务器没有启动。

我没有运气更改端口或将目录移动到 htaccess。

什么有效:

我去了Applications,选择了MAMP,然后调出了Finder的Get Info对话。我为当前用户和管理员添加了Read & Write权限,点了齿轮,点了Apply to enclosed items...

我为 MAMP Pro 做了同样的事情,只是为了确保我的基地被覆盖。

启动 MAMP,将端口更改为默认端口,然后砰!一切正常,包括 MySQL 服务器 - 无需终端命令。

当我将目录改回/Users/myuser/Sites/ 文件夹时,这继续成功。

【讨论】:

【参考方案8】:

更改 Nginx 端口对我有帮助。

【讨论】:

【参考方案9】:

升级到 yosemite 和 MAMP 版本 3.0.7.3 后,我遇到了同样的问题。尝试了很多建议并在那里修复,但没有一个对我有用。

当它击中我时!在 MAMP 中点击“将 Web 和 MySQL 端口设置为 80 和 3306”按钮时,MAMP 为 Apache 和 Nginx 设置端口 80。导致错误,因为两者都设置为使用相同的端口。 我只是将 Nginx 设置为另一个随机端口,点击“确定”按钮,没有出现错误。

我重新启动了 Apache 和 MySQL。瞧!

我所有的本地主机站点都像更新前一样工作。

幸运的是,我刚刚阅读了一篇有趣的文章,解释了如何在 Apache 前面设置 Nginx 以独立地提供静态和动态服务以优化性能。这激发了这个想法。

希望对你有帮助!

【讨论】:

【参考方案10】:

更新:

实际上,这只是一个直接的权限问题。我又遇到了同样的问题,只是做了一个chown -R nathan:staff <dir> 并在 MAMP 中重新启动了 Apache。效果很好。

原帖:

奇怪的是,我认为我在我的机器上解决了这个问题。在查看了默认 htdocs 目录和我想要使用的目录的目录之后,我注意到默认目录归 nrutman:admin 所有,而我想要使用的目录归 nrutman:staff 所有(同一用户,不同的组)。

通过 Finder 的“信息”面板 (Cmd-I),我将 Administrators 组的读/写权限添加到文件夹并删除了人员组权限。我重新启动了 MAMP,一切正常!然后,通过chown,我将所有者改回nrutman:staff。 Finder 的信息面板现在看起来和以前一样,但现在 MAMP 将使用该目录而不会抱怨端口。

绝对看起来像一个 MAMP 错误。不太清楚发生了什么,但我希望能帮助其他正在努力解决这个问题的人。

【讨论】:

以上是关于MAMP “无法启动 Apache,因为端口正在使用中。” AND“无法通过 /tmp/mysql.sock 连接到本地 MySQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章

本地网络上无法访问 MAMP Pro /MAMP/ 起始页

加载 MAMP PRO 起始页 / MAMP 起始页

未找到 MySQL 命令 [MAMP]

升级到 mamp 3 损坏的数据库

Imagemagick 无法读取文件(MAMP)

带有 MAMP 的虚拟主机