エラー内容
ERROR! The server quit without updating PID file (/usr/local/var/mysql/*.local.pid).
このエラーは、MySQLサーバーが起動しようとした際に、何らかの理由で正常に動作できず、PIDファイルを更新せずに終了したことを意味します。
PIDファイルとは?
PID (Process ID) ファイルは、MySQLサーバーが稼働していることを示すファイルです。このファイルには、サーバープロセスのIDが記録されます。
正常に起動した場合に生成され、サーバー停止時には削除されるべきものですが、エラー発生時には適切に更新されない場合があります。
原因
指定されているPIDファイルのディレクトリやファイルが適切に構成されていないことが原因で発生していました。
環境
% mysql --version
mysql Ver 8.0.40 for macos15.1 on arm64 (Homebrew)
% bundle list | grep mysql2
* mysql2 (0.5.6)
解決手順
#インストール
brew install mysql@8.0
#サーバー起動
mysql.server start
####エラー発生####
=> ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/*.local.pid).
「ls -la /opt/homebrew/var/mysql」で権限確認
「cat /opt/homebrew/var/mysql/*.local.err」でエラーの詳細を確認
#・ibdata1、InnoDBなどが作成されない
「/opt/homebrew/var/mysql/」の初期化コマンドを実行 → ibdata1、InnoDBなどが作成されない
#※ mysqld --initialize --user=$(whoami) --datadir=/opt/homebrew/var/mysql
「/opt/homebrew/var/mysql」の中のファイル権限を変更
# sudo chown -R $(whoami):staff /opt/homebrew/var/mysql
# chmod -R 755 /opt/homebrew/var/mysql
「sudo rm -rf /opt/homebrew/var/mysql」で配下のデータを削除
新しくデータを作成+権限修正
# sudo chown -R $(whoami):staff /opt/homebrew/var
「/opt/homebrew/var/mysql」を初期化(デフォルトのファイルを自動生成)
# mysqld --initialize --user=$(whoami) --datadir=/opt/homebrew/var/mysql
# ログに「A temporary password is generated for root@localhost: 6Py<O:W#-Tiy」にあるパスワードをメモする
# 「mysql -u root -p」でログインする時に使う
mysql.server start
# SUCCESS!
データベース作成
# rails db:create
libmysqlclient.23.dylibが見つからない
# エラーLibrary not loaded: /opt/homebrew/opt/mysql/lib/libmysqlclient.23.dylib
# 特定のバージョンを指定する場合に発生する
検索をかけるとファイル発見(※場所が違う)
# find /opt/homebrew -name "libmysqlclient*.dylib" 2>/dev/null
# homebrewでは関連データが全てCellarで格納される。呼び出す際にはoptというフォルダが変数になっており、自動的に適切なデータが入るようになっている
強制的にファイルを作成
# mkdir -p /opt/homebrew/opt/mysql/lib
参照名を変更
# ln -s /opt/homebrew/Cellar/mysql@8.4/8.4.3_3/lib/libmysqlclient.24.dylib /opt/homebrew/opt/mysql/lib/libmysqlclient.23.dylib
リンクが設定されるか確認
# ls -la /opt/homebrew/opt/mysql/lib/
データベース作成
# rails db:create
パスワード、ユーザー名が違うということでエラー
# ActiveRecord::DatabaseConnectionError: There is an issue connecting to your database with your username/password, username: root.
初期化時に発行されたパスワードでログイン
# 87voW!(2akg4
アカウント作成
# ALTER USER 'root'@'localhost' IDENTIFIED BY '自分のパスワード';
db作成完了
# rails db:create
その他のエラー事例:
# エラー:「mysql.server stop」してから「mysql.server start」した時
Do you already have another mysqld server running on socket: /tmp/mysql.sock ?
mysql.server start
ls -l /tmp/mysql.sock
sudo rm -f /tmp/mysql.sock
まとめ
このエラーは、MySQLサーバーの設定やプロセスの異常が原因で発生することが一般的です。上記の手順を一つずつ試していくことで、問題の解決が可能です。特に、エラーログの確認が有効な対処法となります。
MySQLの安定した運用を保つために、設定や環境の変更時には注意深く作業を進めることをおすすめします。