MySQL で接続タイムアウトを変更する

Mehvish Ashiq 2023年6月20日
  1. MySQL で接続タイムアウトを変更する
  2. Windows OS を使用して MySQL connect_timeout を変更する
  3. Linux (Ubuntu 20.04) OS を使用して MySQL connect_timeout を変更する
MySQL で接続タイムアウトを変更する

今日、Linux (Ubuntu 20.04) および Windows オペレーティング システムを使用して MySQL の接続タイムアウトを変更する方法を学習しています。

MySQL で接続タイムアウトを変更する

connect_timeout プロパティがデフォルトで数秒に設定されているため、MySQL Server への接続が失われ続けることがあります。

ここでは、Linux (Ubuntu 20.04) および Windows オペレーティング システムを使用して MySQL の connect_timeout のデフォルト値を変更する方法を説明します。

構成ファイルを更新するか、SQL クエリを使用して、両方のオペレーティング システムで変更を加えることができます。 それぞれ見てみましょう。

Windows OS を使用して MySQL connect_timeout を変更する

まず、Windows コマンド ラインを開き、MySQL サーバーのインストール パスをナビゲートする必要があります。 デフォルトでは、MySQL サーバーは C:\Program Files\MySQL\MySQL Server 8.0 にインストールされます。

コマンドラインで cd bin を使用して bin フォルダーに移動します。 さらに、mysql -u root -p passwordと入力して、rootユーザーとしてログインします。

これで、必要な更新を行う前に、次のクエリを使用して connect_timeout プロパティのデフォルト値を確認できます。

mysql> SHOW VARIABLES LIKE 'connect_timeout';

出力:

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set (0.00 sec)

ご覧のとおり、MySQL サーバーへの接続は 10 秒で失われます。 したがって、Windows コマンドラインで次のコマンドを使用して、28800 秒 (8 時間) に変更できます。

interactive_timeoutwait_timeout を更新することは、完全な実行で多くの時間を消費するアプリケーションを実行しているときに役立つため、良いことです。

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

次のコマンドを使用して、すべての更新を確認します。

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');

出力:

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.04 sec)

ここで、connect_timeout は、mysqld サーバーが Bad Handshake を返す前に接続パケットを待機する秒数を表します。 interactive_timeout は、MySQL サーバーが対話型接続のアクティビティを閉じる前に待機する秒数も示します。

connect_timeoutinteractive_timeout と同様に、wait_timeout も、MySQL サーバーが接続を閉じる前に接続上のアクティビティを待機する秒数を示します。

アプリケーションを作成している場合は、Java や Python などのプログラミング言語を使用して次のように変更できます。

connection.query("SET GLOBAL connect_timeout=28800")
connection.query("SET GLOBAL interactive_timeout=28800")
connection.query("SET GLOBAL wait_timeout=28800")

もう 1つの方法は、C:\ProgramData\MySQL\MySQL Server 8.0\my.ini パスにある my.ini ファイルを開いて構成ファイルを更新することです (デフォルトの場所に MySQL サーバーをインストールした場合)。 次に、[mysqld] セクションを探して書き込みます。

[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800

MySQL サーバーを再起動して、更新をお楽しみください。

Linux (Ubuntu 20.04) OS を使用して MySQL connect_timeout を変更する

Ubuntu シェルを開き、sudo su を使用してスーパーユーザーとしてログインします。 次に、次のクエリを使用して MySQL サーバーにログインします。

$ mysql -u root -p password

入力したら、以下に示すように、10 秒である connect_timeout のデフォルト値を確認します。

mysql> SHOW VARIABLES LIKE 'connect_timeout';

出力:

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| connect_timeout | 10    |
+-----------------+-------+
1 row in set (0.00 sec)

次のクエリを実行して、connect_timeoutinteractive_timout、および wait_timeout の値を更新します。 前述のように、これら 3つを更新して、完全な実行に時間がかかるアプリケーションを実行します。

mysql> SET GLOBAL connect_timeout=28800;
mysql> SET GLOBAL interactive_timeout=28800;
mysql> SET GLOBAL wait_timeout=28800;

出力:

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.13 sec)

もう 1つの方法は、構成ファイルを更新することです。 connect_timeoutinteractive_timeout、および wait_timeout の値として 28800 秒を期待するとします。

そのためには、このパス /etc/mysql/mysql.conf.d/mysqld.cnf にある 構成ファイルを編集する 必要があります。 vim エディターを使用します。 このファイルは、任意のエディターを使用して編集できます。

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] セクションを検索し、以下に示すように connect_timeoutinteractive_timeout、および wait_timeout を追加します。

[mysqld]
connect_timeout = 28800
interactive_timeout = 28800
wait_timeout = 28800

ファイルを保存して終了します。 systemctl restart mysql を使用して MySQL サーバーを再起動します。

次のクエリを使用して、すべてが期待どおりに変更されていることを確認します。

mysql> SHOW VARIABLES WHERE Variable_Name
    -> IN ('connect_timeout', 'interactive_timeout', 'wait_timeout');

出力:

+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| connect_timeout     | 28800 |
| interactive_timeout | 28800 |
| wait_timeout        | 28800 |
+---------------------+-------+
3 rows in set (0.90 sec)
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Connection