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