Mac OS X El CapitanでMySQLをクリーンインストールする
久しぶりに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)やらアンインストールやら