Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  mysql_upgrade — MySQL テーブルのチェックとアップグレード

4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード

mysql_upgrade はすべてのデータベースのすべてのテーブルに対して、MySQL サーバーの現在のバージョンとの非互換性を調べます。また、mysql_upgrade は、システムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにします。

mysql_upgrade は、テーブルに非互換性がある可能性が見つかった場合はテーブルのチェックを実行し、問題が検出された場合はテーブルの修復を試みます。テーブルを修復できない場合は、手動でテーブルを修復する方法について、セクション2.11.4「テーブルまたはインデックスの再作成または修復」を参照してください。

mysql_upgrade は、MySQL をアップグレードするたびに実行するようにしてください。

Linux で、MySQL を RPM パッケージからインストールする場合は、サーバーとクライアントの RPM をインストールする必要があります。mysql_upgrade はサーバー RPM に含まれていますが、クライアント RPM に mysqlcheck が含まれるため、クライアント RPM が必要です。(セクション2.5.5「RPM パッケージを使用して MySQL を Linux にインストールする」を参照してください。)

注記

Windows Server 2008、Vista、およびそれ以降では、mysql_upgrade を管理者権限で実行する必要があります。そのためには、コマンドプロンプトを管理者として実行してそのコマンドを実行します。そうしないと、アップグレードが正しく実行されない場合があります。

注意

アップグレードを実行するに、必ず現在の MySQL インストールをバックアップするようにしてください。セクション7.2「データベースバックアップ方法」を参照してください。

一部のアップグレードの非互換性により、MySQL インストールをアップグレードして mysql_upgrade を実行する前に特殊な処理が必要な場合があります。このような非互換性が、使用しているインストールに該当するかどうかの判断、およびその対処方法については、セクション2.11.1「MySQL のアップグレード」を参照してください。

mysql_upgrade を使用するには、サーバーが稼働していることを確認してください。そのあと、次のように呼び出します。

shell> mysql_upgrade [options]

mysql_upgrade の実行後、システムテーブルに行われた変更が有効になるように、サーバーを停止して再起動します。

複数の 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 は次のコマンドを実行して、テーブルのチェックと修復およびシステムテーブルのアップグレードを実行します。

mysqlcheck --no-defaults --databases
 --fix-db-names --fix-table-names mysql
mysqlcheck --no-defaults --check-upgrade --databases
 --auto-repair mysql
mysql < fix_priv_tables
mysqlcheck --no-defaults --all-databases
 --skip-database=mysql --fix-db-names --fix-table-names
mysqlcheck --no-defaults --check-upgrade --all-databases
 --skip-database=mysql --auto-repair

前述のコマンドに関する注意:

  • mysql_upgrade はまた、mysql_upgrade コマンドに --write-binlog オプションが指定されたかどうかに応じて、--write-binlog または --skip-write-binlogmysqlcheck コマンドに追加します。

  • mysql_upgrademysqlcheck--all-databases オプションで呼び出すため、すべてのデータベースのすべてのテーブルが処理され、完了するのに長時間かかる場合があります。各テーブルはロックされるため、処理中にほかのセッションで使用することはできません。チェックと修復の処理には時間がかかることがあり、特に大きなテーブルでは長い時間を要する可能性があります。

  • --check-upgrade オプションで実行されるチェックの詳細は、CHECK TABLE ステートメントの FOR UPGRADE オプションの説明を参照してください (セクション13.7.2.2「CHECK TABLE 構文」を参照してください)。

  • fix_priv_tables は、mysql_upgrade により内部的に生成され、mysql データベース内のテーブルをアップグレードするための SQL ステートメントを含むスクリプトを示します。

チェックおよび修復が行われたすべてのテーブルは、現在の MySQL バージョン番号でマークされます。これにより、次に同じバージョンのサーバーで mysql_upgrade を立ち上げるときに、そのテーブルを再度チェックして修正する必要があるかどうかが確実にわかります。

mysql_upgrade はまた、MySQL バージョン番号をデータディレクトリの mysql_upgrade_info という名前のファイルに保存します。これは、テーブルのチェックをスキップできるように、すべてのテーブルがこのリリースに関してチェック済みかどうかを迅速にチェックするために使用されます。このファイルを無視してとにかくチェックを実行するには、--force オプションを使用します。

mysql_upgrade では、ヘルプテーブルの内容はアップグレードされません。アップグレードの手順については、セクション5.1.10「サーバー側のヘルプ」を参照してください。

デフォルトでは、mysql_upgrade は MySQL root ユーザーとして実行されます。mysql_upgrade の実行時に root のパスワードが期限切れの場合、パスワードが期限切れであり、その結果 mysql_upgrade が失敗したというメッセージが表示されます。これを修正するには、root のパスワードを期限が切れていないものにリセットして、mysql_upgrade をふたたび実行します。

shell> mysql -u root -p
Enter password: ****  <- enter root password here
mysql> SET PASSWORD = PASSWORD('root-password');
mysql> quit

shell> mysql_upgrade [options]

mysql_upgrade は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql_upgrade] グループおよび [client] グループで指定できます。その他のオプションは mysqlcheck に渡されます。オプションファイルの詳細は、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.4 mysql_upgrade オプション

形式 説明 導入
--basedir 使用しない
--character-sets-dir 文字セットがインストールされているディレクトリ
--compress クライアントとサーバー間で送信される情報をすべて圧縮
--datadir 使用しない
--debug デバッグのログを書き込み
--debug-check プログラムの終了時にデバッグ情報を出力
--debug-info プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth 使用する認証プラグイン 5.6.2
--default-character-set デフォルト文字セットを指定
--defaults-extra-file 通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file 指名されたオプションファイルのみを読み取る
--defaults-group-suffix オプショングループのサフィクス値
--force MySQL の現在のバージョンに対して mysql_upgrade を実行済みでも強制的に実行
--help ヘルプメッセージを表示して終了
--host 指定されたホスト上で MySQL サーバーに接続
--login-path ログインパスオプションを .mylogin.cnf から読み取り 5.6.6
--no-defaults オプションファイルを読み取らない
--password サーバーに接続する際に使用するパスワード
--pipe Windows で、名前付きパイプを使用してサーバーに接続
--plugin-dir プラグインがインストールされているディレクトリ 5.6.2
--port 接続に使用する TCP/IP ポート番号
--print-defaults デフォルトを出力
--protocol 使用する接続プロトコル
--shared-memory-base-name 共有メモリー接続に使用する共有メモリーの名前
--socket ローカルホストへの接続で、使用する Unix ソケットファイル
--ssl 接続に SSL を有効化
--ssl-ca 信頼された SSL CA のリストを含むファイルのパス
--ssl-capath 信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-cert PEM 形式の X509 証明書を含むファイルのパス
--ssl-cipher SSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl 証明書失効リストを含むファイルのパス 5.6.3
--ssl-crlpath 証明書失効リストファイルを含むディレクトリのパス 5.6.3
--ssl-key PEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-cert サーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--tmpdir 一時ファイルのディレクトリ
--upgrade-system-tables システムテーブルのみを更新し、データは更新しない
--user サーバーへの接続時に使用する MySQL ユーザー名
--verbose 冗長モード
--version-check 適切なサーバーバージョンをチェック 5.6.12
--write-binlog すべてのステートメントをバイナリログに書き込み

  • --help

    短いヘルプメッセージを表示して終了します。

  • --basedir=dir_name

    MySQL インストールディレクトリへのパス。このオプションは、後方互換性のため受け付けられますが無視されます。MySQL 5.7 では削除されました。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --compress

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --datadir=dir_name

    データディレクトリへのパス。このオプションは、後方互換性のため受け付けられますが無視されます。MySQL 5.7 では削除されました。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:O,/tmp/mysql_upgrade.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info, -T

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysql_upgrade は通常 [client] グループおよび [mysql_upgrade] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysql_upgrade[client_other] グループおよび [mysql_upgrade_other] グループも読み取ります。

  • --force

    mysql_upgrade_info ファイルを無視し、MySQL の現在のバージョンに対して mysql_upgrade を実行済みでも強制的に実行します。

  • --host=host_name, -h host_name

    指定されたホストの MySQL サーバーに接続します。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにすることができます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、 --no-defaults が使用されたとしても、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysql_upgrade はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysql_upgrade がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

    このオプションは MySQL 5.6.2 で追加されました。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --tmpdir=dir_name, -t path

    一時ファイルを作成するために使用するディレクトリのパス名。

  • --upgrade-system-tables, -s

    システムテーブルのみをアップグレードし、データはアップグレードしません。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。デフォルトのユーザー名は root です。

  • --verbose

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version-check, -k

    mysql_upgrade の接続先のサーバーのバージョンをチェックして、mysql_upgrade がビルドされたバージョンと同じであることを確認します。そうでない場合は mysql_upgrade は終了します。このオプションはデフォルトで有効にされています。--skip-version-check を使用して無効化してください。このオプションは MySQL 5.6.12 で追加されました。

  • --write-binlog

    mysql_upgrade の実行中にバイナリロギングを有効にします。MySQL 5.6.6 以前では、これはデフォルトの動作でした。(アップグレード中にバイナリロギングを無効にするには、プログラムを --skip-write-binlog で起動することによって、このオプションの逆を使用する必要がありました。)MySQL 5.6.7 から、mysql_upgrade によるバイナリロギングはデフォルトで無効です (Bug #14221043)。アクションをバイナリログに書き込む場合は、明示的に --write-binlog を使用してプログラムを呼び出します。(また、MySQL 5.6.7 から、--skip-write-binlog オプションは実際には何もしません。)

    グローバルトランザクション識別子を有効にして稼働している MySQL サーバーでは、mysql_upgrade を実行することは推奨されません (Bug #13833710)。これは、GTID を有効にするということは、mysql_upgrade がシステムテーブルに対して、MyISAM などの非トランザクションストレージエンジンを使用して実行する必要のある更新が、失敗することを意味するからです。詳細は、セクション17.1.3.4「GTID ベースレプリケーションの制約」を参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.