MySQL設定ファイルの基本

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/ibdata1InnoDBストレージエンジン全体の共有テーブルスペースファイル。
システムファイル接続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_passwordcaching_sha2_password
暗号化方式SHA1ベースSHA256ベース
セキュリティ弱い強い
MySQL対応5.x以降8.0以降
デフォルトMySQL 5.7までMySQL 8.0以降
MySQL 8.4対応非対応対応
目次