LoginSignup
2
0

More than 3 years have passed since last update.

Windows + MAMPでMySQLが起動しない場合の対処

Posted at

Windows 環境にインストールした MAMP で、MySQL だけが起動できない事象が起こったので、その際に行った対処をメモとして残しておきます。

環境

  • Windows 10 PRO
  • MAMP 4.1.0

MAMP のインストール先は C:\MAMP (デフォルト)です。

原因

MAMP をインストールしたときにデフォルトで作成されている MySQL の設定ファイル (C:\MAMP\conf\mysql\my.ini) でバイナリロギングが有効になっています。
バイナリロギングが有効なときは、バイナリログのファイル名がインデックスファイル (C:\MAMP\db\mysql\mysql-bin.index) に記録されるようなのですが、インデックスファイルの中にバイナリログのファイル名以外の情報が混入してしまっていることが原因のようでした。

mysql-bin.index
.\mysql-bin.000001
2019-08-26T09:36:52.354676Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
... (途中省略) ...
2019-08-26T09:36:52.926819Z 0 [Note] InnoDB: Loading buffer pool(s) from C:\MAMP\db\mysql\ib_buffer_pool
2019-08-26T09:36:52.926928Z 0 [Note] Plugin 'FEDERATED' is disabled.
.\mysql-bin.000002
mysqld: File '2019-08-26T09:36:52.926928Z 0 [Note] Plugin 'FEDERATED' is disabled.' not found (Errcode: 13 - Permission denied)
2019-08-26T09:36:53.372353Z 0 [ERROR] Failed to open log (file '2019-08-26T09:36:52.926928Z 0 [Note] Plugin 'FEDERATED' is disabled.', errno 13)
2019-08-26T09:36:53.373788Z 0 [ERROR] Could not open log file
mysqld: File '2019-08-26T09:36:52.926819Z 0 [Note] InnoDB: Loading buffer pool(s) from C:\MAMP\db\mysql\ib_buffer_pool' not found (Errcode: 2 - No such file or directory)
2019-08-26T09:36:53.374542Z 0 [ERROR] Failed to open log (file '2019-08-26T09:36:52.926819Z 0 [Note] InnoDB: Loading buffer pool(s) from C:\MAMP\db\mysql\ib_buffer_pool', errno 2)
2019-08-26T09:36:53.376252Z 0 [ERROR] Could not open log file
... (途中省略) ...
mysqld: File '2019-08-26T09:36:52.354676Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions' not found (Errcode: 13 - Permission denied)
2019-08-26T09:36:53.412055Z 0 [ERROR] Failed to open log (file '2019-08-26T09:36:52.354676Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions', errno 13)
2019-08-26T09:36:53.413720Z 0 [ERROR] Could not open log file

上記を見ると、「.\mysql-bin.000001」や「.\mysql-bin.000002」というようなログファイル本体のファイル名以外に、実行ログと思われるものが記録されていて、それらをバイナリログファイルとして開こうとしてエラーになっているようです。
試しに、ログファイル名以外の実行ログ的なものをエディタで削除してみたら、うまく起動できました。
そもそも、バイナリログのインデックスファイルに実行ログ的なものが書き込まれるのが正しいのか?は調査できていません。(スミマセン)

バイナリログの使用目的は?

レプリケーションやリカバリに使用するみたいです。
詳しくはMySQLのマニュアルを参照してください。
https://dev.mysql.com/doc/refman/5.6/ja/binary-log.html

対処

手軽な開発環境として MAMP を利用しているだけで、MySQL のバイナリログを使用することはないと思うので無効にしてしまいます。

バイナリロギングの無効化

C:\MAMP\conf\mysql\my.ini の中の下記の部分をコメントアウトして、バイナリロギングを無効にします。

my.ini
#log-bin=mysql-bin
#binlog_format=mixed
#server-id = 1

バイナリログの削除

C:\MAMP\db\mysql ディレクトリの中にある下記のファイルを削除します。

  • mysql-bin.nnnnnn
  • mysql-bin.index

MAMP の再起動

MySQL Server の緑ランプが点灯すれば成功です!

最後に

個人的な感想ですが、バイナリログが必要な人は、MAMP を使用しないと思うんですが...

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0