my.iniファイルの記述方法
MySQL のサーバやクライアントに設定を行いたい場合、オプションファイルである my.ini または my.cnf に記述します。 MySQL のサーバやクライアントは起動時にオプションファイルを読み込んで設定を反映させます。ここでは my.ini ファイルにどのように設定を記述するのかについて解説します。
(Last modified: )
オプションファイルの記述方法
オプションファイルである my.ini ファイルはテキストファイルです。作成する場合はテキストエディタで作成します。 my.ini ファイルは次のような構成になっています。
#コメント [グループ名] オプション名=値 オプション名=値 オプション名=値 [グループ名] オプション名=値 オプション名
ファイルの中にはいくつかのグループがあり、何に対して設定を適用するのかをグループ名で指定します。設定項目は オプション名 だけか、 オプション名=値 の形式で記述します。またコメントを記述する場合は # または ; のあとに記述してください。
実際に作成済みの my.ini ファイルをテキストエディタで開いてください。( my.ini の場所については「設定ファイル(my.ini)の作成と配置」を参照されてください)。
次のような内容になっています(コメントは削除しています)。
[client] port=3306 [mysql] no-beep [mysqld] port=3306 datadir=C:/ProgramData/MySQL/MySQL Server 8.4/Data default-storage-engine=INNODB sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" log-output=FILE general-log=0 general_log_file="TTT.log" slow-query-log=1 slow_query_log_file="TTT-slow.log" long_query_time=10 log-error="TTT.err" log-bin="TTT-bin" server-id=1 lower_case_table_names=1 secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.4/Uploads" max_connections=151 table_open_cache=4000 temptable_max_ram=1G tmp_table_size=42M internal_tmp_mem_storage_engine=TempTable myisam_max_sort_file_size=2146435072 myisam_sort_buffer_size=74M key_buffer_size=8M read_buffer_size=128K read_rnd_buffer_size=256K innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=16M innodb_buffer_pool_size=128M innodb_redo_log_capacity=100M innodb_thread_concurrency=33 innodb_autoextend_increment=64 innodb_buffer_pool_instances=8 innodb_concurrency_tickets=5000 innodb_old_blocks_time=1000 innodb_stats_on_metadata=0 innodb_file_per_table=1 innodb_checksum_algorithm=0 flush_time=0 join_buffer_size=256K max_allowed_packet=64M max_connect_errors=100 open_files_limit=8161 sort_buffer_size=256K binlog_row_event_max_size=8K sync_source_info=10000 sync_relay_log=10000 loose_mysqlx_port=33060
この my.ini ファイルには client グループ、 mysql グループ、そして mysqld グループの 3 つのグループが記述されています。それではもう少し細かく記述方法を見ていきます。
グループ
my.ini ファイルにはグループを記述することができます。グループは [グループ] のように記述し、グループの記述のあと、別のグループが記述されるかまたは my.ini ファイルの最後までの設定がそのグループに適用されます。
[グループ1] オプション名=値 # グループ1に適用 オプション名=値 # グループ1に適用 [グループ名2] オプション名=値 # グループ2に適用 オプション名=値 # グループ2に適用
グループ名には設定の対象となるプログラム名を記述します。例えば MySQL のサーバである mysqld.exe を対象とする場合、グループ名は mysqld となり [mysql] のように記述します。同じく MySQL のコマンドラインツールである mysql.exe を対象とする場合は [mysql] と記述します。
[mysqld] ・・・・ ・・・・ [mysql] ・・・・ ・・・・ [mysqldump] ・・・・ ・・・・
またすべてのクライアントに適用される設定は特別なグループである [client] に記述します。 [client] グループに記述した設定はコマンドラインツールなどクライアントアプリケーションすべてに適用されますが、サーバである mysqld には適用されません。
[client] を使用する場合は [mysql] など特定のクライアントを対象としたグループよりも先に記述してください。同じ設定が記述されていた場合、あとから記述した内容で上書きされます。
[mysqld] ・・・・ ・・・・ [client] ・・・・ ・・・・ [mysql] ・・・・ ・・・・ [mysqldump] ・・・・ ・・・・
まとめると、サーバである mysqld に適用される設定は [mysqld] グループ、クライアントアプリケーション共通の設定は [client] 、コマンドラインツールなど特定のクライアントアプリケーションに適用させる設定は [mysqld] など個別のグループに対して設定を行います。
設定の記述
設定は オプション名=値 の形式で記述します。例えばポート番号の設置とログイン用パスワードを設定する場合は次のように記述します。
[mysql] port=3306 password=my_password
値はシングルクォーテーションまたはダブルクォーテーションで囲って記述することもできます。値の中にコメントを表す # を含めたい場合などに利用できます。
[mysql] password='my#password' password="my#password"
またオプション名だけで設定を記述するものもあります。
[mysql] auto-rehash no-beep
エスケープシーケンス
オプションに対する値を設定するときに次のエスケープシーケンスが利用できます。
\b バックスペース \t タブ \n 改行 \r 復帰改行 \\ バックスラッシュ \s スペース文字
バックスラッシュ(\)のあとの文字がエスケープシーケンスに一致する文字(例えば b や t )でない場合、バックスラッシュ(\)は単なる文字として扱われます。
オプションの値として Windows のパスを記述する場合、パスの区切り文字はバックスラッシュ(\)またはスラッシュ(/)のどちらでも利用できます。このときバックスラッシュを使用する場合は、区切り文字のあとの文字がエスケープシーケンスに一致する文字かどうかに注意して記述してください。
[mysqld] datadir="C:/ProgramData/MySQL/MySQL Server 8.4/Data" datadir="C:\ProgramData\MySQL\MySQL Server 8.4\Data"
上記の場合はバックスラッシュのあとの文字が「P」「M」「D」なので大丈夫ですが、最後のディレクトリ名が例えば「Data」ではなく「base」だった場合には \ の代わりに \\ と記述する必要があります。( 8.4\base と書いてしまうと \b の部分がエスケープシーケンスとして処理されるため)。
[mysqld] datadir="C:\ProgramData\MySQL\MySQL Server 8.4\\base"
またはエスケープシーケンスの \\ は文字としての \ を表しますので、最初から次のように記述することもできます。
[mysqld] datadir="C:\\ProgramData\\MySQL\\MySQL Server 8.4\\Data"
コメント
行の先頭からコメントを記述する場合は # または ; のあとにコメントを記述してください。
# サーバ用 [mysqld] port=3306 ; コマンドラインツール用 [mysql] port=3306 password=my_password
行の途中からコメントを記述する場合は # を使ってください。
[mysqld] port=3306 # ポート番号 [mysql] password=my_password
-- --
MySQL のオプションファイルである my.ini ファイルにどのように設定を記述するのかについて解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。