トランザクション(InnoDB、BDB)をサポートするテーブルを使用する場合は、最初に
my.cnf
ファイルを作成して、使用する予定のテーブル型用の起動オプションを設定しておく必要があります。
See 章 7. MySQL のテーブル型。
通常は、以下のいずれかの方法で
mysqld
サーバを起動します。
mysql.server
を実行する。このスクリプトは、主にシステムの起動とシャットダウンの際に使用される。詳細については、項2.4.3. 「MySQL を自動的に起動および停止する」
を参照。
mysqld_safe
を実行する。このスクリプトは、mysqld
の適切なオプションを判別し、それらのオプションを指定して
mysqld を実行する。 See
項4.8.2. 「mysqld_safe
(mysqld
のラッパ)」。
Windows NT/2000/XP の場合は、項2.1.1.7. 「Windows NT、2000、または XP での MySQL の起動」 を参照。
mysqld
を直接起動する。
起動した mysqld
デーモンは、ディレクトリをデータディレクトリに変更します。このディレクトリで、mysqld
は、ログファイルと pid
(プロセスID)ファイルを書き込み、データベースを検索します。
データディレクトリ(datadir
変数)の場所は、ディストリビューションのコンパイル時に組み込まれます。ただし、mysqld
が実際に存在するシステム上の場所以外の場所にデータディレクトリがあると、mysqld
は正しく動作しません。パスに問題がある場合は、--help
オプションを指定して mysqld
を起動して、mysqld
が許可するオプションとデフォルトのパス設定を確認することができます。mysqld
へのコマンドライン引数として正しいパス名を指定して、デフォルト設定を無効にすることができます(これらのオプションは、mysqld_safe
でも同様に使用できます)。
通常、mysqld
に指示する必要があるのは、MySQL
がインストールされているベースディレクトリだけです。ベースディレクトリの指定は、--basedir
オプションを使用して行うことができます。また、--help
を使用して、パスオプションを変更した場合の影響をチェックすることもできます(注意:
--help
は、mysqld
コマンドラインの最後に指定する必要があります)。以下に例を示します。
shell> EXECDIR/mysqld --basedir=/usr/local --help
必要なパス設定を決定したら、--help
オプションを指定しないでサーバを起動します。
どの方法でサーバを起動した場合でも、サーバが正常に起動しないときは、ログファイルをチェックして原因を突き止めることができるかどうか確認します。ログファイルは、データディレクトリ(通常、バイナリディストリビューションの場合は
/usr/local/mysql/data
、ソースディストリビューションの場合は
/usr/local/var
、Windows 上では
\mysql\data\mysql.err
)です。データディレクトリ内で
host_name.err
や
host_name.log
の形式の名前を持つファイルを探します。この場合、host_name
は、使用しているサーバホストの名前です。次に、以下のコマンドを実行して、それらのファイルの最後の数行をチェックします。
shell>tail host_name.err
shell>tail host_name.log
ログファイル内で以下のような記述を探します。
000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases
これは、--bdb-no-recover
を指定しないで mysqld
を起動したことと、Berkeley DB
がデータベースをリカバリするときにログファイルに問題があることを発見したことを意味しています。続行できるようにするには、データベースディレクトリにある既存の
Berkeley DB
のログファイルを、後で調べることができるような他の場所に移動します。ログファイルには、log.0000000001
という名前が付いています。この場合、数字は時間の経過とともに増えます
BDB テーブルをサポートしている
mysqld
を起動しようとしてコアを吐いた場合は、BDB
リカバリログに問題があるかもしれません。その場合は、--bdb-no-recover
を指定して mysqld
を起動してみます。この方法でサーバが正常に起動した場合は、データディレクトリからすべての
log.*
ファイルを削除して、もう一度
mysqld
を起動してみます。
以下のエラーが表示された場合は、mysqld
が使用しようとした TCP/IP
ポートまたはソケットファイルを、他のプログラム(または別の
mysqld
サーバ)がすでに使用していることを意味します。
Can't start server: Bind on TCP/IP port: Address already in use か Can't start server: Bind on unix socket...
ps
を使用して、別の
mysqld
サーバが稼動していないことを確認します。別のサーバが稼動していないことが確認できたら、コマンド
telnet ホスト名 TCP/IPポート番号
を実行して、Enter キーを 2、3
回押します。telnet: Unable to connect to remote
host: Connection refused
のようなエラーメッセージが出力されない場合は、mysqld
が使用しようとした TCP/IP
ポートは他のプログラムによって使用されています。
項2.4.1. 「mysql_install_db
の実行に関する問題」 および
項4.2. 「同じマシン上で複数の MySQL サーバを実行する」
を参照してください。
mysqld
が現在稼動している場合は、以下のコマンドを実行して、mysqld
が使用しているパス設定を調べることができます。
shell> mysqladmin variables
または
shell> mysqladmin -h 'your-host-name' variables
mysqld
の起動時に Errcode
13
(Permission
denied
を表す)が表示された場合は、MySQL
データベースまたはログディレクトリ内のファイルの読み取り/書き込み権限がなかったことを意味します。この場合、Unix
root
アカウントで
mysqld
を起動するか、関連するファイルおよびディレクトリを
mysqld
を実行する Unix
アカウントが使用できるように、それらのファイルおよびディレクトリのアクセス権を変更します。
mysqld_safe
によってサーバが起動されたのに、そのサーバに接続できない場合は、/etc/hosts
に以下のようなエントリがあるかどうかを確認します。
127.0.0.1 localhost
この問題は、正常に機能するスレッドライブラリがなく、MySQL がMIT-pthreads を使用するようにコンフィギャされているシステムで発生します。
mysqld
を起動させることができない場合は、トレースファイルを作成して問題を見つけます。
See 項E.1.2. 「トレースファイルの作成」。
InnoDB テーブルを使用している場合は、項7.5.3. 「InnoDB 起動オプション」 を参照してください。
BDB(Berkeley
DB)テーブルを使用している場合は、項7.6.3. 「BDB
起動オプション」
をよく理解しておいてください。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.