Mac OS X El CapitanでMySQLをクリーンインストールする

Modified on

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

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

まずはMySQLを終了させて、関連するプロセスをKILLしていきましょう。

$ mysql.server stop
$ ps -ef | grep mysql
$ kill -KILL PID

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をクリーンインストールする場合はこのディレクトリごと消しましょう。

$ sudo rm -rf /usr/local/var/mysql
$ brew uninstall mysql
$ brew cleanup

MySQLのインストール

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

$ brew update
$ brew install mysql

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

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.server start
$ mysql -u root -p

パスワードを入れて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)やらアンインストールやら