MySQL 5.1 リファレンスマニュアル :: 2 MySQL のインストールと更新 :: 2.10 インストール後の設定とテスト :: 2.10.2 Unix のインストール後のプロシージャ :: 2.10.2.1 mysql_install_db 実行中の問題
« 2.10.2 Unix のインストール後のプロシージャ

2.10.2.2 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.1. mysql_install_db 実行中の問題

mysql_install_db スクリプトの目的は新しい MySQL 権限テーブルを生成することです。それは既存の MySQL 権限テーブルを上書きしないので、他のデータに影響を及ぼすことはありません。

権限のテーブルを再度作成するには、稼動している mysqld サーバを停止します。次にデータ ディレクトリの mysql ディレクトリの名前を変更して保存し、次に mysql_install_db を実行します。.お客様の現在のディレクトリが MySQL のインストール ディレクトリで mysql_install_db が bin ディレクトリにあり、データ ディレクトリ名が data のであるとします。mysql データベースの名前を変更し mysql_install_db を実行するには、以下のコマンドを使用します。

shell> mv data/mysql data/mysql.old
shell> bin/mysql_install_db --user=mysql

mysql_install_db を実行すると、以下の問題が発生する場合があります。

  • mysql_install_db によるグラント テーブルのインストールの失敗

    mysql_install_db がグラント テーブルのインストールに失敗し以下のメッセージの表示後に終了する場合があります。

    Starting mysqld daemon with databases from XXXXXX
    mysqld ended
    

    この場合、エラーのログ ファイルを非常に慎重に調べる必要があります。ログ ファイルはエラーメッセージの名前が付いてディレクトリXXXXXX に格納され、mysqld が起動しなかった理由が示されます。どんな問題が発生したか分からない場合、バグ レポートをポストする時にログを一緒に送ります。項1.7. 「質問またはバグの報告」 参照。

  • mysqld プロセスが実行されている

    これはサーバが稼動していることを示しています。この場合グラント テーブルは多分既に作成されています。その場合、mysql_install_db を起動する必要はまったくありません。なぜなら、それは一度だけ起動する必要があるからです (最初に MySQL をインストールした場合)。

  • 1 台のサーバの起動中に 2 番目の mysqld サーバのインストールはできません。

    これは既存の MySQL のインストールがあり、異なるロケーションに新たにインストールを行う場合に起こります。例えば、量産(実稼働中)インストールが既にあり、テスト目的に 2 番目のインストールを希望される場合です。一般的に 2 番目のサーバを起動しようとした時に起こる問題は 2 台目のサーバが 1 台目のサーバが使用しているネットワーク インターフェースを使用しようとした場合に発生します。この場合、以下のエラーメッセージのいずれかが表示されます。

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

    複数のサーバの設定に関する説明は、項4.12. 「同じマシン上での複数 MySQL サーバの実行」 参照してください。

  • あなたには /tmp ディレクトリへの書き込みアクセスがありません

    一時ファイル作成の書き込みアクセスがない場合あるいは Unix ソケット ファイルがデフォルトのロケーション ( /tmp ディレクトリ) にない場合に、mysql_install_db を実行したり mysqld サーバを起動するとエラーが発生します。

    一時ディレクトリまたは Unix のソケット ファイルに mysql_install_db あるいは mysqld を起動する前に以下のコマンドを実行して別のロケーションを指定できます。そこではsome_tmp_dir は許可を書いたディレクトリへのフルのパス名です。

    shell> TMPDIR=/some_tmp_dir/
    shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock
    shell> export TMPDIR MYSQL_UNIX_PORT
    

    次に mysql_install_db を起動し以下のコマンドでサーバを起動します。

    shell> bin/mysql_install_db --user=mysql
    shell> bin/mysqld_safe --user=mysql &
    

    If mysql_install_db が scripts ディレクトリにある場合には、最初のコマンドを scripts/mysql_install_db に変更します。

    項B.1.4.5. 「How to Protect or Change the MySQL Unix Socket File」、および 項2.14. 「環境変数」 参照。

MySQL で提供された mysql_install_db スクリプトを実行する幾つかの代案があります。

  • 最初の権限を標準のデフォルトと別にしたい場合、それを実行する前にmysql_install_db を変更します。しかし、GRANT および REVOKE をグラント テーブルを設定した後に 使用して権限を変更することが好ましい。換言すると、mysql_install_db を起動し、次に mysql -u root mysql を使用してサーバに MySQL root ユーザーとして接続します。これで必要な GRANT および REVOKE ステートメントを発行できます。

    同じ権限で複数のマシンに MySQL をインストールする場合、GRANT および REVOKE ステートメントを一つのファイルに入れ、そのファイルを mysql を使用してスクリプトとして mysql_install_db を起動後に実行します。.例えば、

    shell> bin/mysql_install_db --user=mysql
    shell> bin/mysql -u root < your_script_file
    

    このようにすることで、各マシンでステートメントを手動で発行する必要がなくなります。

  • グラント テーブルを作成した後に再度完全に作成できます。これらは MySQL_install_db を起動後に GRANT および REVOKE の使用の仕方を学ぶためにを色々変更を加えその後にテーブルからそれらをの変更を削除して起動する再に必要になります。

    グラント テーブルを再度作成するには、mysql データベース ディレクトリにあるすべての .frm、.MYI、および .MYD ファイルのすべて削除します。次に mysql_install_db スクリプトを再度実行します。

  • mysqld を --skip-grant-tables オプションを使用して手動で起動してmysql を使用してご自身で権限情報を追加することができます。

    shell> bin/mysqld_safe --user=mysql --skip-grant-tables &
    shell> bin/mysql mysql
    

    mysql から、mysql_install_db の SQL コマンドを手動で実行できます。mysqladmin flush-privileges あるいは mysqladmin reload を後で実行してグラント テーブルをリロードするようサーバに指定します。

    mysql_install_db を使用しなかった場合は、グラント テーブルを手動で作成しなければならないのみならず、それらを最初に作成しなければなりません。

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