14.2. MySQL

14.2.1. 詳細

rhscl/mysql-80-rhel7 イメージは、MySQL 8.0 SQL データベースサーバーを提供します。

14.2.2. アクセスと使用方法

rhscl/mysql-80-rhel7 イメージをプルするには、root で以下のコマンドを実行します。

# podman pull registry.redhat.io/rhscl/mysql-80-rhel7

必須の環境変数のみを設定し、データベースをホストディレクトリーに保存しないようにするには、以下のコマンドを実行します。

# podman run -d --name mysql_database -e MYSQL_USER=<user> -e MYSQL_PASSWORD=<pass> \
  -e MYSQL_DATABASE=<db> -p 3306:3306 rhscl/mysql-80-rhel7

これにより、データベース db を使用する MySQL を実行する mysql_database という名前のコンテナーと、認証情報 user:pass を持つユーザーが作成されます。ポート 3306 が公開され、ホストにマッピングされます。コンテナーの実行後もデータベースを永続化する必要がある場合には、-v /host/db/path:/var/lib/mysql/data 引数も追加します。/host/db/path ディレクトリーは MySQL データディレクトリーになります。

データベースディレクトリーが初期化されていない場合、エントリーポイントスクリプトは最初に mysql_install_db を実行し、必要なデータベースユーザーおよびパスワードを設定します。データベースを初期化するか、すでに存在する場合は mysqld が実行され、PID 1 として実行されます。podman stop mysql_database コマンドを実行して、接続解除したコンテナーを停止できます。

14.2.3. 設定

イメージは、-e VAR=VALUEpodman run コマンドに渡して初期化中に設定できる以下の環境変数を認識します。

変数名説明

MYSQL_USER

作成される MySQL アカウントのユーザー名

MYSQL_PASSWORD

ユーザーアカウントのパスワード

MYSQL_DATABASE

データベース名

MYSQL_ROOT_PASSWORD

root ユーザーのパスワード (任意)

注記

root ユーザーはデフォルトでパスワードを設定しておらず、ローカル接続のみを許可します。このオプションを設定するには、コンテナーの初期化時に MYSQL_ROOT_PASSWORD 環境変数を設定します。これにより、root アカウントにリモートでログインできるようになります。ローカル接続にはパスワードは必要ありません。リモートの root アクセスを無効にするには、MYSQL_ROOT_PASSWORD の設定を解除して、コンテナーを再起動するだけです。

重要

パスワードはイメージ設定の一部であるため、権限のないユーザー (MYSQL_USER) のパスワードを変更するためにサポートされる唯一の方法は、root ユーザーは環境変数 MYSQL_PASSWORD および MYSQL_ROOT_PASSWORD をそれぞれ変更する方法のみです。SQL ステートメントまたは他の方法でデータベースパスワードを変更すると、変数に格納された値と実際のパスワードが一致しなくなります。データベースコンテナーが起動するたびに、パスワードは環境変数に保存されている値にリセットされます。

以下の環境変数は MySQL 設定ファイルに影響しますが、すべて任意になります。

変数名説明デフォルト

MYSQL_LOWER_CASE_TABLE_NAMES

テーブル名の保存方法と比較方法を設定します。

0

MYSQL_MAX_CONNECTIONS

同時クライアント接続の最大許容数

151

MYSQL_MAX_ALLOWED_PACKET

1 つのパケットまたは生成/中間文字列の最大サイズ。

200M

MYSQL_FT_MIN_WORD_LEN

FULLTEXT インデックスに含まれる単語の最小長

4

MYSQL_FT_MAX_WORD_LEN

FULLTEXT インデックスに含まれる単語の最大長

20

MYSQL_AIO

ネイティブ AIO が破損した場合に innodb_use_native_aio 設定値を制御します。http://help.directadmin.com/item.php?id=529 を参照してください。

1

MYSQL_TABLE_OPEN_CACHE

すべてのスレッドのオープンテーブルの数

400

MYSQL_KEY_BUFFER_SIZE

インデックスブロックに使用されるバッファーのサイズ

32m (または利用可能なメモリーの 10%)

MYSQL_SORT_BUFFER_SIZE

ソートに使用されるバッファーサイズ

256K

MYSQL_READ_BUFFER_SIZE

連続スキャンに使用されるバッファーのサイズ

8M (または利用可能なメモリーの 5%)

MYSQL_INNODB_BUFFER_POOL_SIZE

InnoDB がテーブルおよびインデックスデータをキャッシュするバッファープールのサイズ

32m (または利用可能なメモリーの 50%)

MYSQL_INNODB_LOG_FILE_SIZE

ロググループ内の各ログファイルのサイズ

8M (または使用可能なメモリーの 15%)

MYSQL_INNODB_LOG_BUFFER_SIZE

InnoDB がディスクのログファイルへの書き込みに使用するバッファーのサイズ

8M (または使用可能なメモリーの 15%)

MYSQL_DEFAULTS_FILE

代替の設定ファイルを参照します。

/etc/my.cnf

MYSQL_BINLOG_FORMAT

set は、binlog 形式を設定します。サポートされる値は row および statement です。

statement

MYSQL_LOG_QUERIES_ENABLED

クエリーロギングを有効にするには、この変数を 1 に設定します。

0

MySQL イメージが --memory パラメーターセットを使用して実行されると、以下のパラメーターが明示的に指定されていない限り、そのパラメーターの値は利用可能なメモリーに基づいて自動的に算出されます。

変数名デフォルトのメモリーパーセンテージ

MYSQL_KEY_BUFFER_SIZE

10%

MYSQL_READ_BUFFER_SIZE

5%

MYSQL_INNODB_BUFFER_POOL_SIZE

50%

MYSQL_INNODB_LOG_FILE_SIZE

15%

MYSQL_INNODB_LOG_BUFFER_SIZE

15%

-v /host:/container オプションを podman run コマンドに渡すと、以下のマウントポイントを設定することもできます。

ボリュームマウントポイント説明

/var/lib/mysql/data

MySQL データディレクトリー

注記

ホストからコンテナーにディレクトリーをマウントする場合は、マウントされたディレクトリーに適切なパーミッションがあり、ディレクトリーの所有者とグループが、コンテナー内で実行中のユーザー UID または名前と一致していることを確認します。