启动Mysql的containers时,报错(HTTP code 500) server error - Ports are not available: exposing port问题

报错

(HTTP code 500) server error - Ports are not
available: exposing port TCP 0.0.0.0:33060 -> 0.0.0.0:0: listen tcp
0.0.0.0:33060: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

解决方案

这个错误提示表明在启动 MySQL 容器时,端口 33060 已经被其他服务占用,导致无法在容器中绑定该端口。具体错误信息显示 bind: Only one usage of each socket address (protocol/network address/port) is normally permitted,这意味着同一个端口不能被多个服务同时监听。

解决方案:

  1. 检查端口占用情况
    你可以使用以下命令查看当前是否有服务占用了 33060 端口:

    在 Linux/macOS 上:

    sudo lsof -i :33060
    

    在 Windows 上:

    netstat -ano | findstr :33060
    

    如果发现某个进程已经占用了端口 33060,可以终止该进程,或者选择使用其他端口。

比如我的电脑检查之后
在这里插入图片描述

  • TCP 0.0.0.0:33060[::]:33060 表示端口 33060 正在监听来自 IPv4 和 IPv6 的所有网络接口请求。换句话说,当前有一个进程正在占用 33060 端口,用于 MySQL X Protocol 服务,进程号为 6900
  • LISTENING 状态表示这个端口正在等待网络连接请求。

要解决这个问题,可以考虑以下几种方法:

1. 停止占用 33060 的进程

你可以通过结束该进程来释放 33060 端口。要结束占用该端口的进程,可以在命令行中使用以下命令:

在 Linux/macOS 上:

sudo kill 6900

在 Windows 上:

taskkill /PID 6900 /F

这将停止进程号为 6900 的服务,释放 33060 端口。

2. 修改 Docker 容器的端口映射

如果你不想停止占用端口的进程,可以在启动 MySQL 容器时更改端口映射,例如将 MySQL X Protocol 服务的端口映射到主机上的其他端口:

docker run -d -p 3306:3306 -p 33061:33060 --name mysql-container mysql

这将把容器内部的 33060 端口映射到主机上的 33061 端口。

3. 禁用 MySQL X Protocol

如果你不需要 MySQL X Protocol,可以通过修改 MySQL 配置文件禁用 33060 端口:

  • 找到 MySQL 的配置文件(通常是 /etc/mysql/my.cnf/etc/my.cnf)。
  • 添加以下内容来禁用 X Protocol:
    [mysqld]
    mysqlx=0
    

然后,重新启动 MySQL 服务:

sudo service mysql restart

这将彻底关闭 33060 端口的监听,避免端口冲突。

解决后

我选择了第一种解决方案
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值