MAMP: MySQL无法启动

11

我的MAMP MySQL服务器无法启动。我尝试执行 /Applications/MAMP/bin/startMysql.sh,但是出现了以下错误:

101110 05:50:31 mysqld_safe 正在记录日志到 '/Applications/MAMP/logs/mysql_error_log.err'。

101110 05:50:32 mysqld_safe 使用位于 /Applications/MAMP/db/mysql 的数据库启动mysqld守护程序

101110 05:50:32 mysqld_safe mysqld从pid文件/Applications/MAMP/tmp/mysql/mysql.pid结束

/Applications/MAMP/logs/mysql_error_log.err :

InnoDB:http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html

InnoDB:无法打开或创建数据文件。

InnoDB:如果您尝试添加新的数据文件,并且在此失败,则应将my.cnf中的innodb_data_file_path编辑回原始设置,并删除InnoDB创建的新的ibdata文件。

InnoDB:在这次失败的尝试中,InnoDB仅写入了那些全为零的文件,但尚未以任何方式使用它们。但要小心:不要删除包含宝贵数据的旧数据文件!

101110 5:53:08 [ERROR] 插件'InnoDB'的初始化函数返回错误。

101110 5:53:08 [ERROR] 插件'InnoDB'注册为存储引擎失败。

101110 5:53:08 [ERROR] 无法启动服务器:已使用地址的TCP/IP端口:Bind on TCP/IP port: Address already in use

101110 5:53:08 [错误] 是否已经在端口3306上运行另一个mysqld服务器?

101110 5:53:08 [错误] 中止

101110 5:53:08 [警告] 强制关闭2个插件

101110 5:53:08 [注意] /Applications/MAMP/Library/libexec/mysqld: 关闭完成

101110 05:53:08 mysqld_safe:基于pid文件/Applications/MAMP/tmp/mysql/mysql.pid的mysqld已结束


你能发布一下'/Applications/MAMP/logs/mysql_error_log.err'文件的内容吗? - Thomas
它突然之间就开始工作了! - user502039
11个回答

11

我尝试过但仍然出现错误。你能给我另一个解决方案吗? - huykon225

8
我发现有时会同时运行多个mysql实例。当MySQL无法启动时,我首先退出MAMP,然后进入应用程序/实用工具并打开活动监视器。从那里,我搜索“my”,这应该会显示可能正在运行的任何mysql。然后我要么退出要么强制退出mysql。此时,我可以使用正常工作的MySQL服务器打开MAMP。
希望这能帮到你。

3
在安装了全新干净的 MAMP 4.1.1 后,我遇到了相同的问题。
运行以下命令时: /Applications/MAMP/bin/startMysql.sh MySql 报告如下: mysqld_safe error: log-error set to '/Applications/MAMP/logs/mysql_error_log.err', however file don't exists. Create writable for user 'mysql'..
所以,我运行了命令 touch /Applications/MAMP/logs/mysql_error_log.err 并使用 startMysql.sh 再次尝试。它运行成功了(但不太算是 "自动执行")。

3
这个命令对我有效。
     ps aux | grep mysql 
     lsof -i 
     killall -9 mysqld

如果需要
    sudo killall -9 mysqld

参考:http://www.witheringtree.com/2010/05/how-to-resolve-mysql-not-starting-in-mamp/

如果您在 MAMP 上启动 MySQL 时遇到问题,可以按照以下步骤解决:
1. 确认您的电脑上没有其他 MySQL 服务运行(例如 XAMPP)。
2. 打开终端并输入以下命令停止任何正在运行的 MySQL 进程:
``` sudo killall -9 mysqld ```
3. 在 Finder 中前往 /Applications/MAMP/tmp/mysql 目录,并删除其中的 mysql.sock 文件。
4. 重新启动 MAMP,再次尝试启动 MySQL。


2

很高兴你的问题自行解决了 ;)

从你的错误文件来看,似乎你已经有一个MySQL实例在运行了...不确定这是否适用于Mac,但你可以尝试:

pidof mysqld

如果输出了一些数字(一个或多个),那么MySQL正在运行。如果输出为空,则表示MySQL未运行。

4
在Lion系统中好像没有pidof命令。一般我会使用类似ps aux | grep mysqld这样的命令来进行查找。 - navitronic
1
or brew install pidof - davbuc

1

这可能是另一个原因,我没有看到任何人提到它,所以我会在这个答案中解释一下。

当您重新启动计算机时,有时会强制关闭应用程序,MAMP无法正确关闭MySQL,这会使套接字文件保持不变,而不是MySQL将其作为关闭过程的一部分进行清除。据我了解(需要来源),MySQL曾经在被迫关闭之前进行套接字文件验证,但现在不再这样做了。以下是您需要执行的操作:

  1. 确保没有MySQL实例仍在运行,方法是在终端中键入killall -9 mysqld,然后按回车键执行该命令。它将关闭所有剩余的mysql实例。
  2. 转到 /Applications/MAMP/tmp/mysql
  3. 找到 mysql.sock 文件并将其删除。它也可以被命名为 mysql.sock.lock。
  4. 重新启动 MAMP。

现在应该一切正常地启动和运行。如果不是或者如果您找不到 mysql.sock 文件,则您的问题可能是其他答案中提到的问题之一。


0

这就是我在终端中使用的命令:

sudo chown -R mysql:mysql /usr/local/mysql


0
Jmeyer,有时MAMP会出现一些奇怪的问题,比如拒绝重新启动。当这种情况发生时,请打开MAMP应用程序,点击“首选项”,然后只需点击“确定”。
由于某种原因,这将强制重启MAMP服务器。
不确定这是否是您正在寻找的内容,但这是一个有用的提示。

0

有多种方法可以解决这个问题 - 通常其中一种会起作用。

首先,尝试退出MAMP,然后:

sudo killall -9 mysqld

如果失败了,请尝试转到“首选项”>“端口”,并更改为MAMP默认设置。 点击“确定”。 MySQL应该会启动。 如果您的网站在localhost上没有显示,请尝试将端口改回来。
您还可以停止MAMP,转到“系统偏好设置”>“MySQL”,关闭MySQL,然后重新启动MAMP。
希望这可以帮助!

0

可能解决同样问题的另一种方法:

- 进入文件夹MAMP/db/mysql/ - 删除所有不是文件夹的文件(例如'mysql-bin.XXXXXX' / 'mysql-bin.index' / 'ibdata1' / 'ib_logfileX'等文件)

不用担心,这不会删除任何数据库,但请确保不要删除文件夹。那里存储了您的数据库数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接