MAMP 4的MySQL将无法启动

时间:2016-09-05 10:34:36

标签: mamp

我刚刚将我的MAMP 3升级到MAMP 4,MySQL不再启动。

错误日志文件反复出现这种情况:

160905 11:22:17 mysqld_safe mysqld restarted
2016-09-05 11:22:17 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-09-05 11:22:17 0 [Note] /Applications/MAMP/Library/bin/mysqld (mysqld 5.6.28) starting as process 8122 ...
2016-09-05 11:22:17 8122 [Warning] Setting lower_case_table_names=2 because file system for /Applications/MAMP/db/mysql56/ is case insensitive
2016-09-05 11:22:17 8122 [Note] Plugin 'FEDERATED' is disabled.
2016-09-05 11:22:17 8122 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-09-05 11:22:17 8122 [Note] InnoDB: The InnoDB memory heap is disabled
2016-09-05 11:22:17 8122 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-09-05 11:22:17 8122 [Note] InnoDB: Memory barrier is not used
2016-09-05 11:22:17 8122 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-09-05 11:22:17 8122 [Note] InnoDB: Not using CPU crc32 instructions
2016-09-05 11:22:17 8122 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2016-09-05 11:22:17 8122 [Note] InnoDB: Completed initialization of buffer pool
2016-09-05 11:22:17 8122 [Note] InnoDB: Highest supported file format is Barracuda.
2016-09-05 11:22:17 8122 [Note] InnoDB: The log sequence numbers 280599913118 and 280599913118 in ibdata files do not match the log sequence number 280599917593 in the ib_logfiles!
2016-09-05 11:22:17 8122 [Note] InnoDB: Database was not shutdown normally!
2016-09-05 11:22:17 8122 [Note] InnoDB: Starting crash recovery.
2016-09-05 11:22:17 8122 [Note] InnoDB: Reading tablespace information from the .ibd files...
2016-09-05 11:22:18 8122 [Note] InnoDB: Restoring possible half-written data pages
2016-09-05 11:22:18 8122 [Note] InnoDB: from the doublewrite buffer...
2016-09-05 11:22:18 8122 [Note] InnoDB: 128 rollback segment(s) are active.
2016-09-05 11:22:18 8122 [Note] InnoDB: 5.6.28 started; log sequence number 280599917593
2016-09-05 11:22:18 8122 [Note] RSA private key file not found: /Applications/MAMP/db/mysql56//private_key.pem. Some authentication plugins will not work.
2016-09-05 11:22:18 8122 [Note] RSA public key file not found: /Applications/MAMP/db/mysql56//public_key.pem. Some authentication plugins will not work.
2016-09-05 11:22:18 8122 [Note] Server hostname (bind-address): '*'; port: 8889
2016-09-05 11:22:18 8122 [Note] IPv6 is available.
2016-09-05 11:22:18 8122 [Note]   - '::' resolves to '::';
2016-09-05 11:22:18 8122 [Note] Server socket created on IP: '::'.
10:22:18 UTC - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.

key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68101 K  bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

Thread pointer: 0x7fdf7b288400
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7fff5eeb3870 thread_stack 0x40000
0   mysqld                              0x0000000101296688 my_print_stacktrace + 72
1   mysqld                              0x0000000100f5d9e8 handle_fatal_signal + 952
2   libsystem_platform.dylib            0x00007fff8ac9952a _sigtramp + 26
3   ???                                 0x00007fdf7b0b1170 0x0 + 140597818757488
4   mysqld                              0x0000000101181a13 _Z9get_fieldP11st_mem_rootP5Field + 99
5   mysqld                              0x0000000100f83cb1 _ZL8acl_loadP3THDP10TABLE_LIST + 1985
6   mysqld                              0x0000000100f82f5f _Z10acl_reloadP3THD + 1135
7   mysqld                              0x0000000100f82a55 _Z8acl_initb + 405
8   mysqld                              0x00000001011c0a9a _Z11mysqld_mainiPPc + 2298
9   mysqld                              0x0000000100d4db22 main + 34
10  libdyld.dylib                       0x00007fff8c2205ad start + 1

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0): is an invalid pointer
Connection ID (thread ID): 0
Status: NOT_KILLED

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.

尝试手动启动它会产生此错误:

$ ./Library/bin/mysqld
160905 11:24:33 [ERROR] Can't read from messagefile '/Applications/MAMP/Library/share/english/errmsg.sys'
160905 11:24:33 [Warning] Can't create test file /Applications/MAMP/db/mysql/Joachims-iMac.lower-test
160905 11:24:33 [Warning] Can't create test file /Applications/MAMP/db/mysql/Joachims-iMac.lower-test
./Library/bin/mysqld: Can't change dir to '/Applications/MAMP/db/mysql/' (Errcode: 2)
160905 11:24:33 [ERROR] Aborting

这让我觉得这是由MAMP 4用于从MAMP 3升级旧数据库的系统引起的,它位于/ MAMP / db / mysql56 /中,但升级过程本身因此错误而崩溃:

Warning: Using a password on the command line interface can be insecure.
Looking for 'mysql' as: /Applications/MAMP/Library/bin/mysql
Looking for 'mysqlcheck' as: /Applications/MAMP/Library/bin/mysqlcheck
Error: Failed while fetching Server version! Could be due to unauthorized access.
FATAL ERROR: Upgrade failed

在bin文件夹中查看,我看到一个脚本bin / checkMysql.sh执行此操作:

$ /Applications/MAMP/Library/bin/mysqlcheck --all-databases --check --check-upgrade -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock
Warning: Using a password on the command line interface can be insecure.
/Applications/MAMP/Library/bin/mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/Applications/MAMP/tmp/mysql/mysql.sock' (2) when trying to connect

还有mysql_upgrade这样做:

$ /Applications/MAMP/Library/bin/mysql_upgrade -u root -proot --socket=/Applications/MAMP/tmp/mysql/mysql.sock --force --verbose
Warning: Using a password on the command line interface can be insecure.
Looking for 'mysql' as: /Applications/MAMP/Library/bin/mysql
Looking for 'mysqlcheck' as: /Applications/MAMP/Library/bin/mysqlcheck
Error: Failed while fetching Server version! Could be due to unauthorized access.
FATAL ERROR: Upgrade failed

这些组合看起来就像我在MAMP的控制台输出中尝试升级我的数据库时看到的错误消息。

3 个答案:

答案 0 :(得分:3)

为我修复的是将以下行添加到来自MAMP的my.cnf>文件>编辑模板> MySQL使用的版本

innodb_force_recovery = 1

答案 1 :(得分:3)

从MAMP 3升级到4时,我遇到了这个问题。除了你在这里看到的错误之外,你也可能遇到这个问题:

  

1045 - Access denied for user 'root'@'localhost' (using password: YES)

我相信所有自动升级工具都假设您从未更改root用户的默认MySQL密码(密码:root)。

我的解决方案:

  1. 重新安装MAMP 4
  2. 在终端中,运行/Applications/MAMP/Library/bin/mysqladmin -u root -p password
  3. 系统会提示您输入旧密码(不是root),然后更新并确认新密码为root
  4. 启动MAMP服务器并转到工具>升级MySQL数据库
  5. (可选)升级后还原您的密码,以便您现有的应用程序不会中断。
  6. 你应该好好去。

答案 2 :(得分:0)

看起来这与https://serverfault.com/questions/527422/mysql-upgrade-is-failing-with-no-real-reason-given

的问题相同

我必须完全掌握整个事情并从头开始安装MAMP 4,这很好。