多くの MySQL プログラムには内部変数があり、実行時に SET
ステートメントを使用して設定できます。 セクション13.7.6.1「変数代入の SET 構文」およびセクション5.1.9「システム変数の使用」を参照してください。
これらのプログラム変数のほとんどは、プログラムオプションの指定に適用されるのと同じ構文を使用して、サーバーの起動時にも設定できます。 たとえば、mysql には通信バッファーの最大サイズを制御する max_allowed_packet
変数があります。 mysql に対して max_allowed_packet
変数を 16M バイトの値にセットするには、次のコマンドのいずれかを使用してください。
mysql --max_allowed_packet=16777216
mysql --max_allowed_packet=16M
最初のコマンドは値をバイトで指定します。 2 番目は値を M バイトで指定します。 数値を取る変数の場合、1024、1024 2 または 1024 3 の乗数を示すために、値に接尾辞 K
、M
または G
を付けることができます。 (たとえば、max_allowed_packet
を設定するために使用される場合、サフィクスは K バイト、M バイトまたは G バイトの単位を示します。) MySQL 8.0.14 の時点では、1024 4、1024 5 または 1024 6 の乗数を示すために、T
、P
および E
も使用できます。 接尾辞文字は大文字または小文字にできます。
オプションファイルでは、変数の設定は先頭のダッシュなしで指定されます。
[mysql]
max_allowed_packet=16777216
または:
[mysql]
max_allowed_packet=16M
必要に応じて、オプション名のアンダースコアをダッシュとして指定できます。 次のオプショングループは同等です。 どちらもサーバーのキーバッファーを 512M バイトに設定します。
[mysqld]
key_buffer_size=512M
[mysqld]
key-buffer-size=512M
値乗数を指定する接尾辞は、プログラムの起動時に変数を設定する場合に使用できますが、実行時に SET
で値を設定する場合には使用できません。 一方、SET
, を使用すると、式を使用して変数の値を割り当てることができますが、サーバーの起動時に変数を設定するときには使用できません。 たとえば、次の最初の行はプログラムの起動時に有効ですが、次の行は有効ではありません:
shell> mysql --max_allowed_packet=16M
shell> mysql --max_allowed_packet=16*1024*1024
逆に、実行時に次の 2 行目は有効ですが 1 行目は無効です。
mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;