我们有一个在 mysql 支持的 OSX 服务器上运行的 Web 应用程序。该服务器运行的是 Darwin 内核 9.8.0。Mysql 版本是 5.0.67。
之前它运行良好,我们不太确定发生了什么变化。此后,计算机已重新启动,以查看它是否能启动 mysql。不幸的是,这意味着我无法告诉你它之前是否被其他用户错误地重新启动过,并且那导致了问题。
我收到的错误是:
/usr/libexec/mysqld: File './mysql-bin.124367' not found (Errcode: 13)
090826 14:42:50 [ERROR] Could not use mysql-bin for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
它找不到的文件确实存在...因此,我关闭了 my.cnf 中的日志记录,以查看还可能发生什么。现在我收到的错误是:
090826 14:52:16 [ERROR] Can't start server: Bind on TCP/IP port: Can't assign requested address
090826 14:52:16 [ERROR] Do you already have another mysqld server running on port: 3306 ?
我执行了 a 操作ps -Aef | grep mysql
,发现没有其他正在运行的守护进程。ifconfig
我看到环回设备实际上已启动。我尝试将 mysqld 绑定到其他端口 (3307),但得到了相同的错误(但针对的是 3307)。
我尝试以 root 身份启动 mysqld。我尝试通过传入参数 --user=_mysql 来启动它。
我不知道还能尝试什么。有什么建议吗?
编辑:@nambuls:netstat -n -p tcp | grep 3306
未返回任何内容。
编辑2:错误日志也显示警告 - 我之前没有发布,因为它们只是“警告”,但它可能会有所帮助。
090826 15:16:02 [Warning] Can't create test file /var/mysql/tanglewood.lower-test
090826 15:16:02 [Warning] Can't create test file /var/mysql/tanglewood.lower-test
我不确定为什么它不能创建测试文件 - /var/mysql 对于 _mysql:admin 来说是 775,而我以管理员身份启动了该过程。
答案1
尝试将其添加到您的 my.cnf 文件中:
[mysqld]
bind-address = 127.0.0.1
请注意,这只允许本地 mysql 连接。如果您在同一主机上运行 web 服务器,则此绑定地址将适合您的设置。
如果 127.0.0.1 有效,您可以尝试系统 IP 地址。通常不需要 bind-address。
答案2
好的 - 找到问题了。mysql 配置文件 (/etc/my.cnf) 设置为绑定与当前分配给网络设备的 IP 地址不同的 IP 地址。我将其更改为绑定当前地址,然后让它再次工作。提示是它无法绑定 3306,即使我在使用它时找不到任何东西。
答案3
您检查过 netstat 输出吗?
netstat -n -p tcp | grep 3306
查看是否有程序已在监听 mysql 端口?
如果它未返回任何内容,则表示该端口未被使用。