MySQL 5.1 リファレンスマニュアル :: 2 MySQL のインストールと更新 :: 2.10 インストール後の設定とテスト :: 2.10.2 Unix のインストール後のプロシージャ :: 2.10.2.3 MySQL サーバの起動とトラブルシューティング
« 2.10.2.2 MySQL を自動的に起動・停止する

2.10.3 最初の MySQL アカウントの確保 »
Section Navigation      [Toggle]
  • 2.10.2 Unix のインストール後のプロシージャ
  • 2.10.2.1 mysql_install_db 実行中の問題
  • 2.10.2.2 MySQL を自動的に起動・停止する
  • 2.10.2.3 MySQL サーバの起動とトラブルシューティング

2.10.2.3. MySQL サーバの起動とトラブルシューティング

この項では Unix 上のサーバ起動時の問題に関するトラブルシューティングについて説明します。Windows を使用している場合には、項2.3.13. 「Windows への MySQL インストールにおけるトラブルシューティング」 を参照してください。

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

  • エラーログをチェックしてサーバが起動しない理由を調べます。

  • 使用しているストレージ エンジンに必要なオプションを指定します。

  • サーバがデータ ディレクトリの場所を検索できるか確認します。

  • サーバがデータ ディレクトリにアクセスできるか確認します。データ ディレクトリおよびそのコンテンツの所有者の権利および権限をサーバがそれらを読み込んで変更できるように設定します。

  • サーバに必要なネットワーク インターフェースが利用できるか確認します。

ストレージ エンジンにその振る舞いを管理するオプションが付いているものもあります。my.cnf ファイルを作成して使用するエンジンの起動オプションを指定します。トランザクション テーブル (InnoDB、NDB) をサポートするストレージ エンジンを使用する場合には、サーバを起動する前にそれらが所定の設定になっているか確認します。

MySQL Enterprise.  お客様の環境に適した起動オプションに関する専門家の助言が必要な場合には、MySQL ネットワーク モニタリングおよびアドバイザリ サービスのご購読をお勧めします。詳細は、http://www.mysql.com/products/enterprise/advisors.html を参照してください。

  • InnoDB テーブルを使用している場合は、項13.5.3. 「InnoDB 設定」 を参照してください。

  • MySQL Cluster を使用している場合、項14.4. 「MySQL Cluster の設定」 を参照してください。

ストレージ エンジンは特に指定しない場合はデフォルトの値を使用します。しかし、デフォルトの値が必ずしも適切であるとは限らないので利用できるオプションを確認して明示的に値を指定することをお勧めします。

mysqld サーバが起動すると、ロケーションをデータ ディレクトリに変更します。そこでデータベースを探し、ログ ファイルを書き込みます。サーバはデータ ディレクトリで pid (プロセス ID) ファイルも書き込みます。

サーバをコンパイルするとデータ ディレクトリのロケーションが組み込まれます。ここがデフォルトでサーバがデータ ディレクトリを探す場所です。データ ディレクトリがシステムのどこか別の場所にある場合には、サーバは正常に動作しません。mysqld を --verbose および --help オプションを実行してデフォルトのパスの設定を決定できます。

システム上のデフォルトのロケーションが MySQL のインストール レイアウトと一致しない場合、オプションをコマンドラインあるいはオプション ファイルのmysqld あるいは mysqld_safe に指定してそれらをオーバーライドできます。

データ ディレクトリのロケーションを明示的に指定するには、--datadir オプションを使用します。しかし、通常は MySQL をインストールしそこでデータ ディレクトリを探すベース ディレクトリのロケーションを mysqld に指定できます。--basedir オプションで指定できます。

パス オプションの指定の結果を知るには、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 (Permission denied を意味する) が表示された場合は、データ ディレクトリの権限あるいはそのコンテンツがサーバのアクセスを許可していないことを意味します。この場合、関連するファイルおよびディレクトリの権限を変更してサーバがそれらのを使用できるようにします。サーバを root からも起動できますが、この場合セキュリティが脆弱になるためこの立ち上げは避けるべきです。

Unix では、ロケーションをデータ ディレクトリに変更してデータ ディレクトリおよびそのコンテンツの所有者権限をチェックし、サーバにアクセス権があるか確認します。例えば、データ ディレクトリが /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

サーバが正常に起動できない場合、エラーログをチェックします。ログ ファイルはデータ ディレクトリ (一般的には Windows ではC:\Program Files\MySQL\MySQL Server 5.1\data、Unix のバイナリ ディストリビューションでは /usr/local/mysql/data、Unix ソース ディストリビューションでは /usr/local/var) にあります。データ ディレクトリの host_name.err および host_name.log のフォーム名のファイルは、host_name はサーバのホスト名です。次にこれらのファイルの最後の数行を調べます。Unix では、それらの表示に tail を使用します。

shell> tail host_name.err
shell> tail host_name.log

エラーログにはサーバが起動しなかった情報が含まれています。

以下のいずれかのエラーが発生した場合、他のプログラム (多分別の 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...

別の mysqld サーバを動作している場合には、ps を使用します。その場合、mysqld を再度起動する前にサーバをシャットダウンします。(別のサーバの動作中に、複数のサーバを稼動させる運用の仕方に関する情報は、項4.12. 「同じマシン上での複数 MySQL サーバの実行」 にあります。)

サーバがどれも動作していない場合、コマンド telnet your_host_name tcp_ip_port_number を実行してみます。(デフォルトの MySQL ポート番号は 3306 です。)次に Enter を数回押します。次のようなエラーメッセージが表示されなかった場合 telnet:Unable to connect to remote host:Connection refused、mysqld が使用しようとしている TCP/IP ポートを他のプログラムが使用しています。その際どのプログラムが使用しているかを調べてそれを無効にするか、または mysqld に --port オプションで別のポートを指定します。この場合、サーバに TCP/IP 経由で接続する際にクライアント プログラムにポート番号を指定する必要があります。

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

サーバが起動しても接続できない場合、以下のようなエントリが /etc/hosts ないか確認します。

127.0.0.1       localhost

この問題は実行中のスレッド ライブラリがないシステムで MIT-pthreads を使用する設定が必要な MySQL でのみ発生します。

mysqld を起動できない場合、トレース ファイルを作成し --debug オプションを使用して問題を探します。Creating Trace Files 参照。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates