Web開発プロジェクトでMySQLを扱う際、設定ファイルの構造を理解しておくとトラブルシューティングがスムーズになります。
目次
メインの設定ファイル
MySQLの設定はmy.cnf(Linux/Mac)またはmy.ini(Windows)で管理されます。これがメインの設定ファイルです。
追加で/etc/my.cnf.d/ディレクトリに個別の設定ファイルを配置することもできます。これにより設定を分割して管理しやすくなります。
インストール後の構成
MySQLをインストールすると、既存のディレクトリ内にMySQLのファイルが追加される形です。
Linux系
/
┣ etc/
┃ ┣ my.cnf (メイン設定ファイル)
┃ ┗ my.cnf.d/ (追加設定ファイル用ディレクトリ)
┃ ┗ custom.cnf
┣ var/
┃ ┣ lib/
┃ ┃ ┗ mysql/ (データディレクトリ)
┃ ┃ ┣ ibdata1 (InnoDBシステムテーブルスペース)
┃ ┃ ┣ mysql/ (システムデータベース)
┃ ┃ ┣ your_database/ (作成したデータベース)
┃ ┃ ┗ ib_logfile0, ib_logfile1 (トランザクションログ)
┃ ┗ log/
┃ ┗ mysqld.log (エラーログ)
┗ usr/
┗ bin/
┣ mysql (クライアント)
┗ mysqld (サーバー本体)
| 項目 | カテゴリ | 名前 | 主なパス | 概要 |
| データベース | システム | information_schema | /var/lib/mysql/information_schema/ (論理的) | データベースやテーブルの定義情報を格納する標準的なスキーマ。 |
| データベース | システム | mysql | /var/lib/mysql/mysql/ | ユーザー権限、パスワード、設定など、サーバーのコア動作情報を格納。 |
| データベース | システム | performance_schema | /var/lib/mysql/performance_schema/ | サーバーのパフォーマンス測定や実行時情報を格納。 |
| データベース | システム | sys | /var/lib/mysql/sys/ | performance_schema の情報を扱いやすくしたビューや関数を提供。 |
| システムファイル | データ | ibdata1 | /var/lib/mysql/ibdata1 | InnoDBストレージエンジン全体の共有テーブルスペースファイル。 |
| システムファイル | 接続 | mysql.sock | /var/lib/mysql/mysql.sock (または /tmp/mysql.sock など) | ローカル接続時に使用されるUnixソケットファイル。 |
| システムファイル | ログ | binlog.00000X | /var/lib/mysql/binlog.000001 など | データベースの変更履歴(バイナリログ)を記録するファイル。 |
| システムファイル | 設定 | auto.cnf | /var/lib/mysql/auto.cnf | サーバーのユニークID(UUID)が格納されているファイル。 |
Windows系
C:\Program Files\MySQL\MySQL Server 8.0\
┣ bin\ (実行ファイル)
┣ data\ (データディレクトリ)
┗ my.ini (設定ファイル)
設定ファイルの読み込み順序
複数の設定ファイルがある場合、後から読み込まれた設定が優先されます。どの順序で読み込まれるかは以下のコマンドで確認できます。
mysql --help --verbose | grep my.cnf
設定ファイルのセクション
設定ファイルは用途別にセクションで分かれています。主なセクションは以下の通りです。
[mysqld]– MySQLサーバーの設定[client]– クライアント全般の設定[mysql]– mysqlコマンドラインツールの設定
サンプル
# MySQLサーバーの設定
[mysqld]
bind-address = 0.0.0.0 # すべてのIPアドレスからの接続を許可
character-set-server=utf8mb4 # 文字コードをUTF-8(4バイト対応)に設定
collation-server=utf8mb4_general_ci # 照合順序の設定
default-authentication-plugin = mysql_native_password # 認証方式(MySQL 8.0互換用)
# クライアント側の設定
[client]
default-character-set=utf8mb4 # クライアントの文字コードエラーログの確認
トラブル時にはエラーログを確認しましょう。デフォルトでは/var/log/mysqld.logなどに保存されています。
mysqldumpでバックアップ
bash-4.4# mysqldump -u root -ppassword laravel > backup_$(date +%Y%m%d).sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
bash-4.4# ls
backup_20251207.sql boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
bash-4.4#| 項目 | mysql_native_password | caching_sha2_password |
|---|---|---|
| 暗号化方式 | SHA1ベース | SHA256ベース |
| セキュリティ | 弱い | 強い |
| MySQL対応 | 5.x以降 | 8.0以降 |
| デフォルト | MySQL 5.7まで | MySQL 8.0以降 |
| MySQL 8.4対応 | 非対応 | 対応 |