【问题标题】:cannot bind port 3306 while "netstat" says 3306 is available?无法绑定端口 3306 而“netstat”说 3306 可用?
【发布时间】:2014-05-11 13:37:37
【问题描述】:

mysqld.log 中的消息:

140519 19:21:53 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
140519 19:21:53 [ERROR] Do you already have another mysqld server running on port: 3306 ?
140519 19:21:53 [ERROR] Aborting

同时

netstat -nlp |grep 3306

显示没有进程正在使用此端口,但 mysqld 因绑定地址错误而失败。


整个故事是:

我在我们的服务器上搜索mysql并安装时滑倒了

yum -y install mysql mysql-server

然后发现mysql无法启动上面的错误。

我不确定mysql的重复安装是否会导致这个问题。我也试过在httpd中绑定3306,报同样的错误。

看来是端口管理相关功能进入了不一致的状态,或者“netstat”无法判断的状态?

请问系统如何在绑定请求到达时检查端口是否在使用中?


下面是我的my.cnf的内容。它没有被修改。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
port=3306
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
lower_case_table_names=1
max_connections=13000

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
wait_timeout = 1814400

感谢@favoretti: 我已经通过设置bind-address = <myip> port = 3306 启动了服务 但是,

bind-address = 0.0.0.0 port = 3306 不起作用

虽然bind-address = 0.0.0.0 port = 3307 运作良好。

0.0.0.0bind-address的默认值)

【问题讨论】:

  • my.cnf 中的 bind-address 是什么?
  • @favoretti 抱歉回复晚了。我已经在帖子中添加了 my.cnf。
  • 您的标题不正确。 “netstat”没有说端口“可用”。它只是没有打印任何关于正在使用的端口的信息。这不是一回事。
  • @EJP:本质上它相同的东西。
  • 如果您从配置中删除 port 指令并添加 bind-address = 127.0.0.1 开头会有帮助吗?如果可行,如果您想接受来自其他服务器的 TCP 连接,您可以将 127.0.0.1 替换为您的邮箱地址。

标签: mysql port


【解决方案1】:

按要求粘贴为答案。

如果您从配置中删除 port 指令并添加 bind-address = 127.0.0.1 开头会有帮助吗?如果可行,如果您想接受来自其他服务器的 TCP 连接,您可以将 127.0.0.1 替换为您的盒子的地址。

基本上,手动指定绑定地址。

【讨论】:

猜你喜欢
  • 2020-08-01
  • 2011-09-02
  • 2020-03-15
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2018-01-31
  • 2015-05-11
相关资源
最近更新 更多