久しぶりにWordPressを使うことになって、いざローカル環境で動かそうとしたらMySQLで色々エラーが出たのでクリーンインストールしました。ということでMySQLのクリーンインストールとそのときに出会ったエラーと対処法をまとめました。もうこれでMySQLでイライラしない…はず…

MySQLを終了&残っているプロセスをKILL

まずはMySQLを終了させて、関連するプロセスをKILLしていきましょう。 PIDはプロセスIDです。例えばps -ef | grep mysql
  502 41022     1   0 Thu02PM ??         0:00.02 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe --bind-address=127.0.0.1 --datadir=/usr/local/var/mysql
と表示されたら kill -KILL 41022 でプロセスを終了させることができます。

データベース等の関連ファイル削除とMySQL本体のアンインストール

HomebrewでMySQLをインストールした場合、データベース等の関連ファイルは/usr/local/var/mysqlにまとめられます。ということでMySQLをクリーンインストールする場合はこのディレクトリごと消しましょう。

MySQLのインストール

ここまでで綺麗さっぱりになったので新規にMySQLをインストールします。念のためにHomebrewを最新の状態にアップデートしておきます:

データディレクトリの初期化とセキュリティ設定

MySQL5.7.6からデータベースの初期化がmysql_install_dbからmysqld --initializeに変わったので、そちらを実行します:
mysqld --initialize  --explicit_defaults_for_timestamp
もし/usr/local/var/mysqlを消し忘れていたら
--initialize specified but the data directory has files in it. Aborting
と言われて初期化できないので、/usr/local/var/mysqlはクリーンインストールする最初の段階で削除しておきましょう。 最後にセキュリティ設定です。mysql_secure_installationを実行してセキュリティの設定です。
mysql_secure_installation
聞かれる質問は
  • Set root password?(rootユーザのパスワードを設定する?)
  • Remove anonymous users?(anonymousユーザを削除する?)
  • Disallow root login remotely?(rootユーザのログインをlocalhostに制限する?)
  • Remove test database and access to it?(testデータベースを削除する?)
  • Reload privilege tables now?(権限テーブルを今すぐ読み込む?)
なので、全部”Y”を押していけばいいと思います。

起動してうまくいったら喜ぶ

MySQLを起動してrootで入ってみます: パスワードを入れてmysql>が表示されたらあとは喜ぶだけです。

rootのパスワード変更

mysqld --initializeのときに一時的にrootパスワードが変更されます。そのあとにmysql_secure_installationを実行するとrootのパスワードを変更できるのですが、もし後でrootのパスワードを変更したくなった場合は
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
で変更できます(ちなみにこれはMySQL 5.7.6とそれ以降での方法です)。

おまけ:エラーメッセージと対処法

Plugin ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXX’ is not loaded

実はこれがずっと出てて対処法がわからなかったのでクリーンインストールすることになりました。 今でも原因は謎のままです。

Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock'(2)

これはmysql.sockファイルが見つからないことが原因のようで、touchで空ファイルを用意するといいそうです。sudo touch /tmp/mysql.sock

The server quit without updating PID file (/usr/local/var/mysql/XXXXX.local.pid)

ファイルの所有権が問題だったりするらしいので ls -l /usr/local/var/mysql/ で.pidファイルの所有権を確認して、所有権が他のファイルと違っている場合はchownで所有権を変更しましょう。

参考サイト

mac OS XにHomeBrewでmysqlインストール。からの設定(mysql_install_db、mysql_secure_installation、my.cnf)やらアンインストールやら