homebrew経由でインストールしていたつもりのMySQLが全く動かなくて長い間放置していた問題がたまたま解消できたので、記念のメモ代わりに投稿。
homebrewからMySQLを何度もアンインストールし、Stack Overflowや各種ネットに書いてあったhomebrewでインストールした場合のMySQLの不具合に関して調べまくったけれど、解消しなかった状態でした。
原因
結論を先に書くと、原因は下らなくて、 設定ファイルのmy.cnf
が古いまま消し忘れていたこと でした。
詳しくは後述。
出ていたエラー
各種ネットの情報を駆使しても、以下のエラーがつぶせない状態でした。
$ mysqld --initialize-insecure --user=taku --basedir=/usr/local/Cellar/mysql/5.7.10 --datadir=/usr/local/var/mysql --tmpdir=/tmp --explicit_defaults_for_timestamp
2016-01-12T11:35:11.104978Z 0 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
100
100
2016-01-12T11:35:27.326652Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-01-12T11:35:28.053387Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-01-12T11:35:28.110798Z 0 [ERROR] unknown variable 'innodb_additional_mem_pool_size=16M'
2016-01-12T11:35:28.110818Z 0 [ERROR] Aborting
この[ERROR] unknown variable 'innodb_additional_mem_pool_size=16M'
が問題なんだろうと色々ググったりしてみて、innodb_additional_mem_pool_size
というオプションは現在はdeprecatedになっているらしいということまで突き止めましたが、どこでその値が読み込まれているのか分からずにずっと放置していました。
たまたま今回またMySQLをいじる機会があったので再度いじったところ、たまたまmy.cnf
について書いてある記事を見かけて、「もしかしてMySQLどころかDBもよく分からない時にいじった設定ファイルが残ったままで、そこにinvalidなオプションがあるからエラーになっているのでは?」と思い、参考資料に書いてあった以下のコマンドを使い、該当する場所にmy.cnf
がないか探してみました。
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
案の定、/usr/local/etc/my.cnf
だけが残っていて、そこにinnodb_additional_mem_pool_size=16M
と記載されていてエラーを出していたようなので、このmy.cnf
を消してbrew postinstall mysql
をしたところ、mysql.server start
をしてもエラーが出なくなり、直接Mac上でMySQLが使えるようになりました。
まとめ
古くて不必要になったものはさっさと消しておきましょう。
参考資料