ServBay MariaDB/MySQL パッケージ トラブルシューティングガイド
概要
MariaDBとMySQLは、業界をリードするオープンソースのリレーショナルデータベース管理システムです。これらはさまざまなWebアプリや業務用シーンで広く活用されています。ServBayは、macOS環境で複数バージョンのMariaDB/MySQLパッケージを統合し、開発者に便利で効率的なローカルデータベース環境を提供します。高い安定性が特徴ですが、開発や動作中に「パッケージが起動できない」「接続できない」「パフォーマンスが悪い」といったトラブルが発生する可能性もあります。
本ガイドは、ServBayユーザーがMariaDB/MySQLパッケージで生じやすいトラブルを診断し解決できるよう支援するものです。よくある問題と診断・対応手順をまとめ、特にServBay環境特有のパスやコマンドも明記しています。
重要事項:
- データや設定を変更する前に、必ずデータベースをバックアップしてください!ServBayは内蔵バックアップ機能を提供しているので、定期的な利用を強く推奨します。
- ガイド内コマンド例に記載のバージョン番号(例:
11.3
や11.5
)は、ご利用中のMariaDB/MySQLバージョンに合わせて置き換えてください。使用中のバージョンはServBayアプリ画面で確認できます。 - コマンド中の
<username>
、<database>
、<your_backup.sql>
などはプレースホルダーです。実際の内容に置き換えてご利用ください。 - 本ガイドはmacOSを前提としています。
共通の初期診断ステップ
問題ごとに個別の対処に移る前に、以下の基本的なチェック項目をお試しください。
- ServBayパッケージの状態確認: ServBayアプリ画面を開き、問題のMariaDB/MySQLバージョンが「起動中」と表示されているか確認してください。またはコマンドラインからも確認できます。bash
servbayctl status mariadb <version> # 例:MariaDB 11.3の状態確認 servbayctl status mariadb 11.3
1
2
3 - ServBayアプリのログ確認: ServBayでパッケージ管理や起動時にエラーが記録されている場合があります。アプリ画面のログ欄やメインログファイルを参照してください。
- MariaDB/MySQLエラーログ確認: パッケージの起動失敗やランタイムエラー診断で最重要です。ログファイルのパス例:bashログ末尾のエラーメッセージは原因特定の重要手がかりです。
/Applications/ServBay/logs/mariadb/<version>/<version>.err # 例:MariaDB 11.3の最新50行を確認 tail -n 50 /Applications/ServBay/logs/mariadb/11.3/11.3.err
1
2
3
よくあるトラブルと解決策
1. 接続エラー:SQLSTATE[HY000] [2002] No such file or directory
このエラーは、クライアントがUnixソケットファイル経由でMariaDB/MySQLサーバーへ接続できない場合に表示されることが多いです。macOS上のUnixソケットはローカル通信のための機構で、通常、TCP/IPより低いレイテンシで利用されます。指定されたソケットファイルが見つからないと本エラーが発生します。
主な原因と対処法:
- MariaDB/MySQLパッケージが起動していない:
- ServBay画面や
servbayctl status mariadb <version>
コマンドで稼働状態を確認。 - 停止中なら起動を試み、失敗した場合は
.err
エラーログで原因チェック。
- ServBay画面や
- ソケットファイルパス設定ミス:
- クライアントが参照するソケットファイルパスと、サーバー設定ファイル(
my.cnf
)のsocket
パラメータが一致しているか確認。 /Applications/ServBay/etc/mariadb/<version>/my.cnf
内socket
設定を確認。- アプリやクライアント側のソケット指定、またはServBayデフォルトのソケットパス(通常
/Applications/ServBay/tmp/
または/tmp/
配下)を確認。例:/Applications/ServBay/tmp/mysql.sock
や/tmp/mysql.sock
。
- クライアントが参照するソケットファイルパスと、サーバー設定ファイル(
- ServBayのデフォルト設定問題:
- ServBayの「設定」→「デフォルトSQLサーバー」で正しいバージョンが選択されているか確認。
mysql
コマンド等、-S
や-h
指定なし時はデフォルトソケットを利用します。
- ServBayの「設定」→「デフォルトSQLサーバー」で正しいバージョンが選択されているか確認。
- 権限の問題:
- MariaDB/MySQLプロセス実行ユーザーがソケットディレクトリに書き込み権限を持つか、クライアント実行ユーザーがソケットファイルの読み取り権限を持つかチェック。独自に
/Applications/ServBay/tmp/
や/tmp/
の権限を変更した場合は注意。
- MariaDB/MySQLプロセス実行ユーザーがソケットディレクトリに書き込み権限を持つか、クライアント実行ユーザーがソケットファイルの読み取り権限を持つかチェック。独自に
代替方法(TCP/IP接続を強制する):
- 接続先を
localhost
ではなく127.0.0.1
に指定。これでTCP/IP経由になります。これで成功する場合、ソケット設定の問題と特定できます。bashmysql -u <username> -p -h 127.0.0.1 -P 3306
1
2. 接続エラー:ネットワーク接続の問題(Connection refused
, Can't connect to MySQL server
など)
クライアントがTCP/IPネットワーク経由でMariaDB/MySQLサーバーへ接続できない際に発生するエラーです。
主な原因と対処法:
- MariaDB/MySQLパッケージ未起動:(前述同様に状態・
.err
ログをチェック) - ポート競合:
- MariaDB/MySQL標準ポート(3306)が他プロセスで使用されていないか調査。
- ポート使用状況確認コマンド:bash
lsof -i :3306 # または netstat -anv | grep LISTEN | grep 3306
1
2
3 - 競合していたら該当プロセス停止、または
my.cnf
内port
パラメータを変更しパッケージを再起動。
- ファイアウォールによる遮断:
- macOS標準やサードパーティファイアウォールが3306ポートへのアクセスをブロックしている場合あり。
- システム設定→ネットワーク→ファイアウォールを確認。
- 一時的に
mysqld
プロセスを許可コマンド例(実環境に合わせてパス調整):bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mariadb/<version>/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mariadb/<version>/bin/mysqld
1
2
- 設定ファイルの
bind-address
問題:my.cnf
内のbind-address
が127.0.0.1
またはlocalhost
だとローカル以外からTCP接続できません。他マシン/VMから接続するなら0.0.0.0
(全てのIPを受け付ける)や必要なIPに変更し、ファイアウォール側も許可が必要です。
- ネットワーク設定(
localhost
の解決):localhost
が正しく127.0.0.1
(IPv4)や::1
(IPv6)に解決されることを確認。- ターミナルで
ping localhost
、/etc/hosts
の内容なども確認。 - プロキシソフトが
localhost
トラフィックを妨げていないか注意。
3. MariaDB/MySQLパッケージの起動失敗
主な原因と対処法:
- エラーログ確認(最重要):
/Applications/ServBay/logs/mariadb/<version>/<version>.err
を必ずチェックし、エラー内容を解読しましょう。 - 設定ファイルの誤り:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
に構文ミスや誤パスがないか確認。- 設定ファイルチェックコマンド(
mysqld
のパスは環境に合わせて修正):bash/Applications/ServBay/bin/mariadb/<version>/bin/mysqld --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf --validate-config
1
- ポート競合:(前述の
lsof -i :<port>
等で確認可能) - ディスク空き容量不足: データディレクトリ(
/Applications/ServBay/db/mariadb/<version>/
)やログ用ディレクトリ(/Applications/ServBay/logs/mariadb/<version>/
)の空きが十分あるか確認。 - 権限トラブル:
- 通常はServBayが正しく設定しますが、ユーザーの権限手動変更(例:
/Applications/ServBay
配下のファイル/ディレクトリ権限)による問題や、実行ユーザー_mysql
等に適切なアクセス権があるかを確認。 - 権限チェック例:bash
ls -ld /Applications/ServBay/db/mariadb/<version> ls -l /Applications/ServBay/etc/mariadb/<version>/my.cnf ls -ld /Applications/ServBay/logs/mariadb/<version>
1
2
3
- 通常はServBayが正しく設定しますが、ユーザーの権限手動変更(例:
- データファイルの破損: (後述「データベースクラッシュやデータ破損」も参照)前回の異常終了などでデータが壊れている場合があります。
問題解決後:
servbayctl restart mariadb <version>
で再起動を試みましょう。
4. ユーザー権限・認証に関するトラブル
接続自体は成功しても、ユーザー名・パスワード・権限設定エラー(Access denied
等)が発生する場合。
主な原因と対処法:
- ユーザー名やパスワードミス: 接続時の入力ミスに注意。ServBayでrootパスワードのリセットも可能です。
- ホスト制限: アカウントのホスト制限
'<username>'@'localhost'
→'<username>'@'127.0.0.1'
等のバリエーションや、'%'
(全てのホスト許可)を確認。 - 権限不足: 使用中ユーザーに対象DBへの必要権限(SELECT, INSERT, UPDATE, DELETE, CREATE, DROP等)が割り当てられているか調べる。
- 権限の確認方法:
- 権限を持つ(例:root)アカウントでログイン:bash
mysql -u root -p
1 - 権限内容確認SQL:sql
SHOW GRANTS FOR '<username>'@'<hostname>'; -- 例:'webapp'が'localhost'から接続した場合 SHOW GRANTS FOR 'webapp'@'localhost'; -- 'admin'が任意ホストから接続する場合 SHOW GRANTS FOR 'admin'@'%';
1
2
3
4
5 - 必要に応じて
GRANT
やREVOKE
で権限修正、または新規ユーザーを作成してください。
- 権限を持つ(例:root)アカウントでログイン:
5. パフォーマンス問題
DBパフォーマンス低下はアプリ全体のレスポンスにも影響します。
主な原因と対処法:
- スロークエリ: SQL自体の非効率やインデックス未指定、クエリプラン不良など。
- スロークエリログ有効化:
my.cnf
でslow_query_log = 1
とlong_query_time = 1
(1秒超のクエリを記録)、slow_query_log_file
でパス設定。再起動後、スロークエリログを分析。 EXPLAIN
の活用: 問題クエリにEXPLAIN
を付与し実行計画を分析。インデックス利用有無やテーブルスキャン状況を把握。sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1- クエリ最適化:
EXPLAIN
結果をもとに共通パターンを避け、無駄なSELECT *
やWHERE句の関数利用を減らし、インデックスが効くように工夫。
- スロークエリログ有効化:
- インデックス不足/設定ミス: よく検索/並べ替え/グループ化するカラムに適切なインデックスを。
- テーブル構造を分析し、必要に応じてインデックス作成。sql※インデックス追加で書き込みコストやディスク消費が増えるためバランスが必要です。
CREATE INDEX idx_column_name ON your_table_name(column_name);
1
- テーブル構造を分析し、必要に応じてインデックス作成。
- キャッシュパラメータ不適切:
my.cnf
のinnodb_buffer_pool_size
やkey_buffer_size
(MyISAM用途)など。- 設定のチューニング: macOSのRAM容量や用途に応じてバッファサイズを改定。InnoDB主体なら
innodb_buffer_pool_size
が特に重要。サーバー用途なら利用可能メモリの50~70%程が目安です。設定変更後は再起動必須。ini[mysqld] # 例。適宜調整。単位はK, M, G等 innodb_buffer_pool_size = 2G # MyISAM多用の場合 # key_buffer_size = 256M
1
2
3
4
5
- 設定のチューニング: macOSのRAM容量や用途に応じてバッファサイズを改定。InnoDB主体なら
- ハードウェアリソース逼迫: CPU高負荷、メモリ不足やページング、ディスクI/Oの逼迫など。macOSのアクティビティモニターや
top
/htop
等で状態確認。
6. データベースクラッシュ・データ破損
DB起動不能や動作中の頻繁なクラッシュ、データアクセスの異常等が発生し、これはデータファイル破損の可能性が考えられます。
主な原因と対処法:
- エラーログ確認:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
でクラッシュまたは破損の記録(InnoDBエラー・ファイルシステムエラーなど)を探します。 - ハードウェア故障: ディスクやRAM異常による書き込み/読み込みエラー。
Console.app
やハードウェア診断ツールで検査。 - ソフトウェア競合やバグ: 特定バージョンのMariaDB/MySQLのバグ、他ソフトとの競合なども稀に発生します。
- 設定ファイルエラー:
my.cnf
の無効パラメータや構文誤りも安定動作を阻害します。 - 強制終了等: MariaDB/MySQL正常停止手順によらず終了(ServBayアプリの強制終了等)した際、ファイルの一貫性が失われる場合あり。
解決手順:
- まず安全な再起動を試行: ServBayアプリまたはコマンドで一度パッケージを再起動(
servbayctl restart mariadb <version>
)し、自己修復機能を待ちます。 mysqlcheck
によるテーブル検査・修復: テーブル整合性チェックツールです(特にMyISAMで有効)。bash注意:# ServBayのmy.cnfを用いて全DB/全テーブル検査 mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --check --all-databases # MyISAMの場合自動修復も可能 # mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --auto-repair --check --all-databases
1
2
3
4--auto-repair
はMyISAM用。InnoDBは--check
で検知はできますが修復は手動工程やバックアップ復元が必要。- InnoDB強制リカバリー(
innodb_force_recovery
): InnoDBが起動不能なとき、最後の手段で強制回復モードを利用できます。リスクの大きい操作なのでデータロスや不整合の恐れがあり、本番前提の一時対応と考えてください。- まずデータディレクトリ(破損含む)をバックアップ:
/Applications/ServBay/db/mariadb/<version>/
を別途コピー。 - 問題バージョンの
my.cnf
(/Applications/ServBay/etc/mariadb/<version>/my.cnf
)を編集。 [mysqld]
セクションにinnodb_force_recovery = N
(1から順に6まで徐々に値を上げる。一度に大きな値にせず段階的に!)。- MariaDB/MySQL稼働を試行:
servbayctl start mariadb <version>
- 起動できたら(読み取りのみ等限定状態でも)、すぐに
mysqldump
で全データバックアップを取ることが重要!bashバックアップファイルの正当性・十分な容量を必ず確認mysqldump --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --all-databases --routines --triggers --events > /path/to/your_emergency_backup.sql
1 - バックアップ後はMariaDB/MySQLをすぐ停止:
servbayctl stop mariadb <version>
my.cnf
編集でinnodb_force_recovery = N
を削除またはコメントアウト。- データ復旧処理: 通常は新しいデータディレクトリを初期化(破損データディレクトリのリネームまたは削除)、バックアップしたファイルを新DBへインポートする流れです。
- まずデータディレクトリ(破損含む)をバックアップ:
- バックアップからの復元: 修復不能・不整合な場合は最新の整合バックアップから復元が最も確実です。ServBayのバックアップファイルは通常
/Applications/ServBay/backup/mariadb/<version>/
に保存されます(ServBayバックアップ機能利用時)。- 復元例(
<target_database_name>
データベースへインポートと仮定):bash注意:# まず対象データベースを作成 # mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;" # インポート mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5<version>
は対象パッケージのバージョンに適宜置き換えてください。
- 復元例(
7. バックアップ/リストアに関するトラブル
ServBay内蔵バックアップやmysqldump
による手動バックアップ/リストア時の典型的な問題と対策です。
主な原因と対処法:
- バックアップファイルの不完全/破損:
- バックアップファイルのサイズ確認(
ls -lh /path/to/your_backup.sql
)、想定の容量かをチェック。 - テキストエディタや
less
でファイルの中身を見て、妥当なSQL形式かを確認。 mysqldump
利用時のエラーメッセージや、ServBay内蔵バックアップ実行時のアプリログも参照。
- バックアップファイルのサイズ確認(
- リストアコマンドミス:
- ユーザー名・パスワード・対象データベース名の指定ミス。
- コマンド実行ユーザー権限不足。
- SQL構文互換性:MySQL⇔MariaDB等、異なるバージョンや種類でエクスポートした場合はSQL互換性問題も注意。
- 外部キー制約違反: インポート時、外部参照先テーブル未作成等でエラーになる場合。データ取り込み前後で一時的に外部キー検査を無効化すると回避できます。sql注意: インポート時のみ無効化し、通常運用時は必ず有効に戻してください。不整合データ混入リスクがあります。
-- インポート前に実行 SET foreign_key_checks = 0; -- インポートコマンド例: source /path/to/your_backup.sql; -- mysqlクライアント上で実行 -- あるいはmysqlコマンド: mysql ... < /path/to/your_backup.sql -- インポート後に必ず有効化 SET foreign_key_checks = 1;
1
2
3
4
5
6
7
8 - 文字コード・照合順序問題: バックアップのテーブル定義やデータが、リストア先で扱えないcharset/collationだとエラーや文字化けが起こります。データベース・テーブルレベルの文字コード設定が互換性あるかを事前に確認。
正しい復元コマンド例:
# 例:単一データベース用バックアップの場合
# 対象データベース(<target_database_name>)を事前に作成しておくこと
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
# インポート実行
mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
# --all-databasesバックアップはDB指定不要
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
2
3
4
5
6
7
8
9
注意: <version>
は復元先MariaDB/MySQLパッケージのバージョンで置き換えてください。ServBay標準のバックアップ機能は復元しやすい形式のファイルとオプションを用意しています。
8. 特定のバグ:MariaDB 11.5.1 InnoDB起動失敗(ib_logfile0 was not found
/ Missing FILE_CHECKPOINT
)
MariaDB 11.5.1で報告されている重大な既知バグで、InnoDBストレージエンジンが正常に初期化できず、ログファイル復元も失敗するためDB自体が起動不能になります。
エラーログ例:
/Applications/ServBay/logs/mariadb/11.5/11.5.err
内に下記のような記載が現れる場合:
[ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
2
3
4
もしくは
[ERROR] InnoDB: Missing FILE_CHECKPOINT(xxxxx) at xxxxx
[ERROR] InnoDB: Log scan aborted at LSN xxxxx
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
2
3
4
5
InnoDBがログファイルを見つけられず、または読み込めず、ストレージエンジン初期化に失敗していることを示しています。
対処法(データ移行が伴うため、必ずバックアップを先に!):
根本的な修正が困難な既知バグです。まず強制モードで起動&エクスポートを試し、新規の安定バージョンにデータ移行するのが推奨です。
- 強制リカバリーでバックアップを取得(リスクあり):
- 影響を受けるMariaDB 11.5の設定ファイル
/Applications/ServBay/etc/mariadb/11.5/my.cnf
を編集。 [mysqld]
セクションにinnodb_force_recovery = 6
を追加。- ServBay画面またはCLIでMariaDB 11.5を起動:
servbayctl start mariadb 11.5
- もし起動できた場合(エラーや制限付き起動でも)、直ちに
mysqldump
で全データをバックアップしてください!これがデータ退避の唯一のチャンスです。bashバックアップの出力サイズ・内容が妥当か必ずご確認ください。mysqldump --defaults-file=/Applications/ServBay/etc/mariadb/11.5/my.cnf -u root -p --all-databases --routines --triggers --events > /Applications/ServBay/backup/mariadb/11.5/mariadb_11.5_emergency_backup.sql
1
- 影響を受けるMariaDB 11.5の設定ファイル
- 問題バージョンのデータディレクトリ処理:
- MariaDB 11.5を停止:
servbayctl stop mariadb 11.5
my.cnf
ファイルを編集し、`innodb_force_recovery
- MariaDB 11.5を停止: