Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb
HTML Download (TGZ) - 10.0Mb
HTML Download (Zip) - 10.1Mb


このページは機械翻訳したものです。

2.10.2.1 MySQL Server の起動時の問題のトラブルシューティング

このセクションでは、サーバーの起動に関する問題のトラブルシューティングの提案を提供します。 Windows システムに関するその他の推奨事項については、セクション2.3.5「Microsoft Windows MySQL Server インストールのトラブルシューティング」 を参照してください。

サーバーの起動時に問題がある場合、次を試してみます。

  • エラーログをチェックして、サーバーが起動しない原因を確認します。 ログファイルはデータディレクトリ (通常、Windows では C:\Program Files\MySQL\MySQL Server 8.0\data、Unix/Linux バイナリ配布では /usr/local/mysql/data、Unix/Linux ソース配布では /usr/local/var) にあります。 データディレクトリの host_name.err および host_name.log の形式のファイル名のファイルを探します。ここで、host_name はサーバーホストの名です。 次にこれらのファイルの最後の数行を調べます。 それらを表示するには tail を使用します。

    shell> tail host_name.err
    shell> tail host_name.log
  • 使用しているストレージエンジンに必要なオプションがあれば指定します。 my.cnf ファイルを作成して、使用するエンジンの起動オプションを指定します。 トランザクションテーブルをサポートするストレージエンジン (InnoDBNDB) を使用する予定である場合、サーバーを起動する前に、それらが適切に構成されていることを確認します。 InnoDB テーブルを使用している場合は、ガイドラインについてはセクション15.8「InnoDB の構成」、オプションの構文についてはセクション15.14「InnoDB の起動オプションおよびシステム変数」を参照してください。

    ストレージエンジンは、省略したオプションについてはデフォルト値を使用しますが、使用可能なオプションを確認し、デフォルト値がインストールに対して適切でないようなオプションがあれば明示的に値を指定することを推奨します。

  • サーバーが、データディレクトリを検索する場所を認識していることを確認してください。 mysqld サーバーはこのディレクトリを現在のディレクトリとして使用します。 そこでデータベースを探し、ログファイルに書き込むことを想定しています。 サーバーはデータディレクトリで pid (プロセス ID) ファイルも書き込みます。

    デフォルトのデータディレクトリの場所は、サーバーのコンパイル時にハードコードされます。 デフォルトのパス設定を確認するには、mysqld--verbose オプションおよび --help オプションで起動します。 データディレクトリがシステム上の別の場所にある場合は、その場所を、コマンド行またはオプションファイルで --datadir オプションを使用して mysqld または mysqld_safe に指定します。 そうしないと、サーバーが正しく動作しません。 --datadir オプションの代替として、MySQL がインストールされているベースディレクトリの場所を、mysqld--basedir で指定できます。そうすれば、mysqld はそこで data ディレクトリを検索します。

    パスオプションの指定の結果を知るには、mysqld をそれらのオプションで実行し次に--verbose および --help オプションを実行します。 たとえば、mysqld がインストールされているディレクトリに場所を変更して次のコマンドを実行すると、/usr/local のベースディレクトリを使用してサーバーを起動した場合の影響が表示されます:

    shell> ./mysqld --basedir=/usr/local --verbose --help

    --datadir のようなオプションも同様に指定できますが、--verbose および --help は最後のオプションでなければなりません。

    任意のパスを設定したあと、サーバーを --verbose および --help を使用しないで起動します。

    mysqld が動作しているときは、次のコマンドを実行してどのパス設定が使用されているか確認できます。

    shell> mysqladmin variables

    または:

    shell> mysqladmin -h host_name variables

    host_name は MySQL サーバーのホスト名です。

  • サーバーが、データディレクトリにアクセスできることを確認してください。 データディレクトリとそのコンテンツの所有権と許可は、サーバーがそれらを読み取って修正できるようなものでなければなりません。

    mysqld の起動時に Errcode 13 (許可が却下されたことを意味します) を受け取る場合は、データディレクトリまたはそのコンテンツの特権が、サーバーアクセスを許可しないものであることを意味します。 この場合、関連するファイルおよびディレクトリの権限を変更して、サーバーがそれらを使用する権限を持つようにします。 サーバーを root から起動することもできますが、この場合セキュリティーの問題が生じるため、避けるべきです。

    データディレクトリの場所を変更し、データディレクトリとその内容の所有権をチェックして、サーバーがアクセスできることを確認します。 たとえば、データディレクトリが /usr/local/mysql/var の場合は、次のコマンドを使用します。

    shell> ls -la /usr/local/mysql/var

    データディレクトリあるいはそのファイルまたはサブディレクトリが、サーバーを稼働するためのログインアカウントの所有でない場合、それらの所有権をそのアカウントに変更します。 そのアカウントが mysql の場合、次のコマンドを使用します。

    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql/var

    所有権が適切な場合でも、ファイルシステムのさまざまな部分へのアプリケーションのアクセスを管理するようなセキュリティーソフトウェアがシステム上で実行されている場合、MySQL が起動に失敗することがあります。 この場合は、そのソフトウェアを再構成して mysqld が通常の動作中に使用するディレクトリにアクセスできるようにします。

  • サーバーが使用するネットワークインタフェースが利用できることを確認します。

    次のいずれかのエラーが発生した場合、ほかのプログラム (おそらく別の mysqld サーバー) が、mysqld が使用する TCP/IP ポートあるいは Unix のソケットファイルを使用していることを意味します。

    Can't start server: Bind on TCP/IP port: Address already in use
    Can't start server: Bind on unix socket...

    ps を使用して、別の mysqld サーバーが稼働しているかどうか判断します。 その場合、mysqld を再度起動する前にサーバーをシャットダウンします。 (別のサーバーが動作中で、複数のサーバーを稼働させる必要がある場合は、その方法に関する情報は、セクション5.8「1 つのマシン上での複数の MySQL インスタンスの実行」にあります。)

    別のサーバーが稼働していない場合は、コマンド telnet your_host_name tcp_ip_port_number を実行します。 (デフォルトの MySQL ポート番号は 3306 です。) 次に Enter を数回押します。 telnet: Unable to connect to remote host: Connection refused などのエラーメッセージが表示されない場合は、mysqld が使用しようとしている TCP/IP ポートをほかのプログラムが使用しています。 それがどのプログラムなのかを追跡して無効にするか、--port オプションを使用して、mysqld に別のポートで待機するよう指示します。 この場合、TCP/IP を使用してサーバーに接続するときに、クライアントプログラムに同じデフォルト以外のポート番号を指定します。

    ポートにアクセスできない別の理由に、ファイアウォールがその接続をブロックしている場合があります。 その場合は、ファイアウォールの設定を、ポートへのアクセスを許可するように変更します。

    サーバーは起動するがそれに接続できない場合は、/etc/hosts に次のようなエントリがあることを確認します。

    127.0.0.1       localhost
  • mysqld を起動できない場合は、--debug オプションを使用して、トレースファイルを作成して問題を発見してみてください。 セクション5.9.4「DBUG パッケージ」を参照してください。