MySQL占用3306端口一次令人恼火的经历(3306被mysql占用)

MySQL占用3306端口:一次令人恼火的经历

最近,我们团队的服务器在运行过程中出现了一些问题。我们发现,MySQL占用了3306端口,导致其他相关程序无法正常运行。这个问题耗费了我们数个小时来寻找解决方案,下面是我们的经历和解决方案。

我们在进入服务器后,运行以下代码以检查哪些程序占用了3306端口:

netstat -tuln | grep 3306

这个命令可以列出当前运行的程序和它们占用的端口。如果MySQL正在运行并占用3306端口,我们以为我们可能可以通过重启MySQL服务来解决问题。我们运行以下代码来重启MySQL:

service mysqld restart

然而,这并没有解决我们的问题。我们继续使用以下代码检查MySQL是否占用了3306端口:

ps -ef | grep mysqld

我们发现MySQL确实正在运行,但它似乎无法响应其他程序的请求。我们在日志文件中查找错误消息,并发现MySQL在启动时出现了以下错误:

2022-07-05T06:31:39.272750Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.

这个错误消息可能是由于文件权限问题导致的,我们试图更改MySQL数据目录的权限,但它没有任何效果。最终,我们找到了一个有用的方法来解决这个问题。

我们使用以下命令杀死所有对MySQL服务的进程:

killall -9 mysqld

然后,我们使用以下命令重启MySQL服务:

systemctl restart mysqld

这次,MySQL成功地重新启动,并且没有再次占用3306端口。我们运行以下命令来检查MySQL是否正在运行:

systemctl status mysqld

这个命令显示MySQL正在运行,并且没有任何错误消息。

我们再次运行以下代码来检查MySQL是否仍然占用3306端口:

netstat -tuln | grep 3306

这一次,我们没有看到MySQL占用了3306端口,我们可以放心地运行其他程序了。

这次经历花费了我们很多时间和精力,但它也给我们提供了宝贵的经验。当服务器中的一个程序占用一个端口并影响其他程序时,一定要调查问题的根本原因。在我们这种情况下,杀死所有对MySQL服务的进程并重新启动服务是最有效的解决方案。


数据运维技术 » MySQL占用3306端口一次令人恼火的经历(3306被mysql占用)