MySQL 8.0.16 では、MySQL サーバーは以前に mysql_upgrade によって処理されたアップグレードタスクを実行します (詳細は、セクション2.11.3「MySQL のアップグレードプロセスの内容」 を参照)。 したがって、mysql_upgrade は不要であり、そのバージョンで非推奨になりました。将来のバージョンの MySQL で削除される予定です。 mysql_upgrade はアップグレードタスクを実行しなくなったため、無条件にステータス 0 で終了します。
MySQL をアップグレードするたびに、mysql_upgrade を実行する必要があります。これにより、アップグレードした MySQL サーバーとの非互換性が検索されます:
追加された可能性のある新しい権限または機能を利用できるように、
mysql
スキーマ内のシステムテーブルがアップグレードされます。パフォーマンススキーマ、
INFORMATION_SCHEMA
、およびsys
スキーマがアップグレードされます。ユーザースキーマを調べます。
mysql_upgrade は、テーブルに非互換性がある可能性が見つかった場合はテーブルのチェックを実行し、問題が検出された場合はテーブルの修復を試みます。 テーブルを修復できない場合は、手動でテーブルを修復する方法について、セクション2.11.13「テーブルまたはインデックスの再作成または修復」を参照してください。
mysql_upgrade は MySQL サーバーと直接通信し、アップグレードの実行に必要な SQL ステートメントを送信します。
アップグレードを実行する前に、必ず現在の MySQL インストールをバックアップするようにしてください。 セクション7.2「データベースバックアップ方法」を参照してください。
一部のアップグレードの非互換性では、MySQL インストールをアップグレードして mysql_upgrade を実行する前に特別な処理が必要になる場合があります。 このような非互換性が、使用しているインストールに該当するかどうかの判断、およびその対処方法については、セクション2.11「MySQL のアップグレード」を参照してください。
次のように mysql_upgrade を使用します:
サーバーが実行されていることを確認します。
-
mysql_upgrade を起動して、
mysql
スキーマのシステムテーブルをアップグレードし、他のスキーマのテーブルをチェックおよび修復します:shell> mysql_upgrade [options]
システムテーブルの変更を有効にするには、サーバーを停止して再起動します。
アップグレードする MySQL サーバーインスタンスが複数ある場合は、目的の各サーバーへの接続に適した接続パラメータを使用して mysql_upgrade を起動します。 たとえば、ローカルホストで 3306 から 3308 までのポートでサーバーが稼働している場合、適切なポートに接続してそれぞれをアップグレードします。
shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]
Unix でのローカルホスト接続では、--protocol=tcp
オプションを使用すると、Unix ソケットファイルではなく TCP/IP を強制的に使用して接続が行われます。
デフォルトでは、mysql_upgrade は MySQL root
ユーザーとして実行されます。 mysql_upgrade の実行時に root
パスワードの有効期限が切れた場合は、パスワードの有効期限が切れ、mysql_upgrade が失敗したことを示すメッセージが表示されます。 これを修正するには、root
パスワードをリセットして有効期限を解除し、mysql_upgrade を再度実行します。 まず、root
としてサーバーに接続します:
shell> mysql -u root -p
Enter password: **** <- enter root password here
ALTER USER
を使用してパスワードをリセットします:
mysql> ALTER USER USER() IDENTIFIED BY 'root-password';
次に、mysql を終了し、mysql_upgrade を再度実行します:
shell> mysql_upgrade [options]
特定のストレージエンジン (MyISAM
など) を無効にするように disabled_storage_engines
システム変数を設定してサーバーを実行すると、mysql_upgrade が次のようなエラーで失敗することがあります:
mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled
(Table creation is disallowed).
これを処理するには、disabled_storage_engines
を無効にしてサーバーを再起動します。 これで、mysql_upgrade を正常に実行できるようになります。 その後、disabled_storage_engines
を元の値に設定してサーバーを再起動します。
--upgrade-system-tables
オプションを指定して起動しないかぎり、mysql_upgrade は必要に応じてすべてのユーザースキーマのすべてのテーブルを処理します。 テーブルチェックの完了には時間がかかる場合があります。 各テーブルはロックされるため、処理中にほかのセッションで使用することはできません。 チェックと修復の処理には時間がかかることがあり、特に大きなテーブルでは長い時間を要する可能性があります。 テーブルチェックでは、CHECK TABLE
ステートメントの FOR UPGRADE
オプションを使用します。 このオプションに必要な内容の詳細は、セクション13.7.3.2「CHECK TABLE ステートメント」 を参照してください。
mysql_upgrade は、チェックおよび修復されたすべてのテーブルを現在の MySQL バージョン番号でマークします。 これにより、次回同じバージョンのサーバーで mysql_upgrade を実行するときに、特定のテーブルを再度チェックまたは修復する必要があるかどうかを判断できます。
mysql_upgrade は、MySQL のバージョン番号をデータディレクトリ内の mysql_upgrade_info
という名前のファイルに保存します。 これは、テーブルのチェックをスキップできるように、すべてのテーブルがこのリリースに関してチェック済みかどうかを迅速にチェックするために使用されます。 このファイルを無視してとにかくチェックを実行するには、--force
オプションを使用します。
mysql_upgrade_info
ファイルは非推奨です。将来のバージョンの MySQL で削除される予定です。
mysql_upgrade は mysql.user
システムテーブルの行をチェックし、plugin
カラムが空の行について、資格証明がそのプラグインと互換性のあるハッシュ形式を使用している場合は、そのカラムを'mysql_native_password'
に設定します。 4.1 より前のパスワードハッシュを持つ行は、手動でアップグレードする必要があります。
mysql_upgrade では、タイムゾーンテーブルまたはヘルプテーブルの内容はアップグレードされません。 アップグレード手順については、セクション5.1.15「MySQL Server でのタイムゾーンのサポート」 および セクション5.1.17「サーバー側ヘルプのサポート」 を参照してください。
--skip-sys-schema
オプションで呼び出されないかぎり、mysql_upgrade は sys
スキーマがインストールされていない場合はインストールし、それ以外の場合は現在のバージョンにアップグレードします。 sys
スキーマは存在するが version
ビューがない場合、その存在しないという前提で、ユーザーが作成したスキーマがあるとエラーが発生します:
A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.
この場合にアップグレードするには、まず既存の sys
スキーマを削除するか、名前を変更します。
mysql_upgrade は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql_upgrade]
グループおよび [client]
グループで指定できます。 MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.2.2「オプションファイルの使用」を参照してください。
表 4.10 「mysql_upgrade オプション」
オプション名 | 説明 | 導入 | 非推奨 |
---|---|---|---|
--bind-address | 指定されたネットワークインタフェースを使用して MySQL サーバーに接続 | ||
--character-sets-dir | 文字セットがインストールされているディレクトリ | ||
--compress | クライアントとサーバー間で送信される情報をすべて圧縮 | 8.0.18 | |
--compression-algorithms | サーバーへの接続に許可される圧縮アルゴリズム | 8.0.18 | |
--debug | デバッグログの書込み | ||
--debug-check | プログラムの終了時にデバッグ情報を出力 | ||
--debug-info | プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力 | ||
--default-auth | 使用する認証プラグイン | ||
--default-character-set | デフォルト文字セットを指定 | ||
--defaults-extra-file | 通常のオプションファイルに加えて、名前付きオプションファイルを読み取ります | ||
--defaults-file | 指名されたオプションファイルのみを読み取る | ||
--defaults-group-suffix | オプショングループのサフィクス値 | ||
--force | mysql_upgrade が現在の MySQL バージョンに対してすでに実行されている場合でも実行を強制 | ||
--get-server-public-key | サーバーから RSA 公開キーをリクエスト | ||
--help | ヘルプメッセージを表示して終了 | ||
--host | MySQL サーバーがあるホスト | ||
--login-path | ログインパスオプションを .mylogin.cnf から読み取り | ||
--max-allowed-packet | サーバーとの間で送受信するパケットの最大長 | ||
--net-buffer-length | TCP/IP とソケット通信のバッファーサイズ | ||
--no-defaults | オプションファイルを読み取らない | ||
--password | サーバーに接続する際に使用するパスワード | ||
--pipe | 名前付きパイプを使用してサーバに接続する (Windows のみ) | ||
--plugin-dir | プラグインがインストールされているディレクトリ | ||
--port | 接続用の TCP/IP ポート番号 | ||
--print-defaults | デフォルトオプションの印刷 | ||
--protocol | 使用するトランスポートプロトコル | ||
--server-public-key-path | RSA 公開鍵を含むファイルへのパス名 | ||
--shared-memory-base-name | 共有メモリー接続用の共有メモリー名 (Windows のみ) | ||
--skip-sys-schema | sys スキーマをインストールまたはアップグレードしない | ||
--socket | 使用する Unix ソケットファイルまたは Windows 名前付きパイプ | ||
--ssl-ca | 信頼できる SSL 認証局のリストを含むファイル | ||
--ssl-capath | 信頼できる SSL 認証局の証明書ファイルを含むディレクトリ | ||
--ssl-cert | X.509 証明書を含むファイル | ||
--ssl-cipher | 接続の暗号化に許可される暗号 | ||
--ssl-crl | 証明書失効リストを含むファイル | ||
--ssl-crlpath | 証明書失効リストファイルを含むディレクトリ | ||
--ssl-fips-mode | クライアント側で FIPS モードを有効にするかどうか | ||
--ssl-key | X.509 キーを含むファイル | ||
--ssl-mode | サーバーへの接続に必要なセキュリティ状態 | ||
--tls-ciphersuites | 暗号化された接続に許可される TLSv1.3 暗号スイート | 8.0.16 | |
--tls-version | 暗号化された接続に許可される TLS プロトコル | ||
--upgrade-system-tables | システムテーブルのみを更新し、ユーザースキーマは更新しない | ||
--user | サーバーへの接続時に使用する MySQL ユーザー名 | ||
--verbose | 冗長モード | ||
--version-check | 適切なサーバーバージョンをチェック | ||
--write-binlog | すべてのステートメントをバイナリログに書き込み | ||
--zstd-compression-level | zstd 圧縮を使用するサーバーへの接続の圧縮レベル | 8.0.18 |
-
短いヘルプメッセージを表示して終了します。
-
複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。
-
文字セットがインストールされているディレクトリ。 セクション10.15「文字セットの構成」を参照してください。
-
可能であれば、クライアントとサーバーの間で送信されるすべての情報を圧縮します。 セクション4.2.8「接続圧縮制御」を参照してください。
MySQL 8.0.18 では、このオプションは非推奨です。 MySQL の将来のバージョンで削除されることが予想されます。 レガシー接続圧縮の構成を参照してください。
-
--compression-algorithms=
value
サーバーへの接続に許可される圧縮アルゴリズム。 使用可能なアルゴリズムは、
protocol_compression_algorithms
システム変数の場合と同じです。 デフォルト値はuncompressed
です。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。
-
--debug[=
,debug_options
]-# [
debug_options
]デバッグのログを書き込みます。 一般的な
debug_options
文字列はd:t:o,
です。 デフォルトはfile_name
d:t:O,/tmp/mysql_upgrade.trace
です。 -
プログラムの終了時に、デバッグ情報を出力します。
-
プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。
-
使用するクライアント側認証プラグインに関するヒント。 セクション6.2.17「プラガブル認証」を参照してください。
-
--default-character-set=
charset_name
charset_name
をデフォルト文字セットとして使用します。 セクション10.15「文字セットの構成」を参照してください。 -
--defaults-extra-file=
file_name
このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
指定されたオプションファイルのみ使用します。 ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
通常のオプショングループだけでなく、通常の名前に
str
のサフィクスが付いたグループも読み取ります。 たとえば、mysql_upgrade は通常[client]
グループおよび[mysql_upgrade]
グループを読み取ります。--defaults-group-suffix=_other
オプションを指定した場合、mysql_upgrade は[client_other]
グループおよび[mysql_upgrade_other]
グループも読み取ります。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
mysql_upgrade_info
ファイルを無視し、MySQL の現在のバージョンに対して mysql_upgrade を実行済みでも強制的に実行します。 -
RSA キーペアベースのパスワード交換に必要な公開キーをサーバーにリクエストします。 このオプションは、
caching_sha2_password
認証プラグインで認証されるクライアントに適用されます。 そのプラグインの場合、サーバーは要求されないかぎり公開鍵を送信しません。 このオプションは、そのプラグインで認証されないアカウントでは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。--server-public-key-path=
が指定され、有効な公開キーファイルが指定されている場合は、file_name
--get-server-public-key
よりも優先されます。caching_sha2_password
プラグインの詳細は、セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。 -
--host=
,host_name
-h
host_name
指定されたホストの MySQL サーバーに接続します。
-
.mylogin.cnf
ログインパスファイルの指定されたログインパスからオプションを読み取ります。 「「ログインパス」」は、接続先の MySQL サーバーおよび認証に使用するアカウントを指定するオプションを含むオプショングループです。 ログインパスファイルを作成または変更するには、mysql_config_editor ユーティリティを使用します。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
クライアント/サーバー通信用のバッファーの最大サイズ。 デフォルトの値は 24M バイトです。 最小値と最大値は 4KB と 2GB です。
-
クライアント/サーバー通信用のバッファーの初期サイズ。 デフォルト値は 1MB − 1KB です。 最小値と最大値は 4KB と 16MB です。
-
オプションファイルを読み取りません。 オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにすることができます。例外として、
.mylogin.cnf
ファイルは、存在する場合はすべての場合に読み取られます。 これにより、--no-defaults
が使用されたとしても、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnf
は mysql_config_editor ユーティリティーによって作成されます。 セクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。このオプションおよびその他のオプションファイルオプションの詳細は、セクション4.2.2.3「オプションファイルの処理に影響するコマンド行オプション」 を参照してください。
-
--password[=
,password
]-p[
password
]サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysql_upgrade によってプロンプトが表示されます。 指定する場合は、
--password=
または-p
とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 コマンド行でパスワードを指定しないようにするには、オプションファイルを使用します。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。
パスワードがなく、mysql_upgrade でパスワードの入力を求められないように明示的に指定するには、
--skip-password
オプションを使用します。 -
Windows で、名前付きパイプを使用してサーバーに接続します。 このオプションは、ネームパイプ接続をサポートするために
named_pipe
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーである必要があります。 -
プラグインを検索するディレクトリ。 このオプションは、
--default-auth
オプションを使用して認証プラグインを指定しても、mysql_upgrade がそれを検出しない場合に指定します。 セクション6.2.17「プラガブル認証」を参照してください。 -
TCP/IP 接続の場合、使用するポート番号。
-
プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。
-
--protocol={TCP|SOCKET|PIPE|MEMORY}
サーバーへの接続に使用するトランスポートプロトコル。 これは、他の接続パラメータが通常、必要なプロトコル以外のプロトコルを使用する場合に便利です。 許可される値の詳細は、セクション4.2.7「接続トランスポートプロトコル」を参照してください。
-
--server-public-key-path=
file_name
RSA キーペアベースのパスワード交換のためにサーバーが必要とする公開キーのクライアント側コピーを含む、PEM 形式のファイルへのパス名。 このオプションは、
sha256_password
またはcaching_sha2_password
認証プラグインで認証されるクライアントに適用されます。 これらのプラグインのいずれかで認証されないアカウントでは、このオプションは無視されます。 クライアントがセキュアな接続を使用してサーバーに接続する場合と同様に、RSA ベースのパスワード交換を使用しない場合も無視されます。--server-public-key-path=
が指定され、有効な公開キーファイルが指定されている場合は、file_name
--get-server-public-key
よりも優先されます。sha256_password
の場合、このオプションは、MySQL が OpenSSL を使用して構築された場合にのみ適用されます。sha256_password
およびcaching_sha2_password
プラグインの詳細は、セクション6.4.1.3「SHA-256 プラガブル認証」 および セクション6.4.1.2「SHA-2 プラガブル認証のキャッシュ」 を参照してください。 -
--shared-memory-base-name=
name
Windows の場合、共有メモリを使用してローカルサーバに接続するために使用する共有メモリ名。 デフォルト値は
MYSQL
です。 共有メモリー名では大文字と小文字が区別されます。このオプションは、共有メモリー接続をサポートするために
shared_memory
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 -
デフォルトでは、
sys
スキーマがインストールされていない場合は mysql_upgrade によってインストールされ、それ以外の場合は現在のバージョンにアップグレードされます。--skip-sys-schema
オプションは、この動作を抑止します。 -
localhost
への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。Windows では、このオプションは、名前付きパイプ接続をサポートするために
named_pipe
システム変数を有効にしてサーバーを起動した場合にのみ適用されます。 また、接続を行うユーザーは、named_pipe_full_access_group
システム変数で指定された Windows グループのメンバーである必要があります。 -
--ssl
で始まるオプションは、SSL を使用してサーバーに接続するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。 暗号化接続のコマンドオプションを参照してください。 -
--ssl-fips-mode={OFF|ON|STRICT}
クライアント側で FIPS モードを有効にするかどうかを制御します。
--ssl-fips-mode
オプションは、暗号化された接続の確立には使用されず、許可する暗号化操作に影響する点で、他の--ssl-
オプションとは異なります。 セクション6.8「FIPS のサポート」を参照してください。xxx
次の
--ssl-fips-mode
値を使用できます:OFF
: FIPS モードを無効にします。ON
: FIPS モードを有効にします。STRICT
: 「strict」 FIPS モードを有効にします。
注記OpenSSL FIPS オブジェクトモジュールが使用できない場合、
--ssl-fips-mode
に許可される値はOFF
のみです。 この場合、--ssl-fips-mode
をON
またはSTRICT
に設定すると、クライアントは起動時に警告を生成し、FIPS 以外のモードで動作します。 -
--tls-ciphersuites=
ciphersuite_list
TLSv1.3 を使用する暗号化された接続に許可される暗号スイート。 値は、コロンで区切られた 1 つ以上の暗号スイート名のリストです。 このオプションに指定できる暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。
このオプションは MySQL 8.0.16 で追加されました。
-
暗号化された接続に許可される TLS プロトコル。 値は、1 つまたは複数のコンマ区切りプロトコル名のリストです。 このオプションに指定できるプロトコルは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」を参照してください。
-
mysql
スキーマのシステムテーブルのみをアップグレードし、ユーザースキーマはアップグレードしません。 -
--user=
,user_name
-u
user_name
サーバーへの接続に使用する MySQL アカウントのユーザー名。 デフォルトのユーザー名は
root
です。 -
冗長モード。 プログラムの動作についてより多くの情報を出力します。
-
mysql_upgrade の接続先のサーバーのバージョンをチェックして、mysql_upgrade がビルドされたバージョンと同じであることを確認します。 そうでない場合は mysql_upgrade は終了します。 このオプションはデフォルトで有効にされています。
--skip-version-check
を使用して無効化してください。 -
デフォルトでは、mysql_upgrade によるバイナリロギングは無効になっています。 アクションをバイナリログに書き込む場合は、
--write-binlog
を使用してプログラムを起動します。グローバルトランザクション識別子 (GTID) を有効にして (
gtid_mode=ON
) サーバーを実行している場合は、mysql_upgrade によるバイナリロギングを有効にしないでください。 -
--zstd-compression-level=
level
zstd
圧縮アルゴリズムを使用するサーバーへの接続に使用する圧縮レベル。 許可されるレベルは 1 から 22 で、大きい値は圧縮レベルの増加を示します。 デフォルトのzstd
圧縮レベルは 3 です。 圧縮レベルの設定は、zstd
圧縮を使用しない接続には影響しません。詳細は、セクション4.2.8「接続圧縮制御」を参照してください。
このオプションは MySQL 8.0.18 で追加されました。