mysql_install_db
スクリプトの目的は、新しい MySQL
権限テーブルを生成することです。このスクリプトがその他のデータに影響を及ぼすことはありません。
MySQL
権限テーブルがすでにインストールされている場合は、何も行いません。
権限テーブルを作成し直す場合は、mysqld
サーバを停止して(サーバが稼動している場合)、以下のようなコマンドを実行します。
shell>mv mysql-data-directory/mysql mysql-data-directory/mysql-old
shell>mysql_install_db
ここでは、mysql_install_db
の実行時に発生する可能性のある問題について説明します。
mysql_install_db
が権限テーブルをインストールしない
mysql_install_db
が権限テーブルのインストールに失敗し、以下のメッセージを表示した後に終了することがある。
starting mysqld daemon with databases from XXXXXX mysql daemon ended
この場合は、ログファイルを詳しく調べる必要がある。ログは、エラーメッセージに表示されている
XXXXXX
ディレクトリにある。ログには
mysqld
が起動しない原因が示される。何が起きたかわからない場合は、mysqlbug
を使用してバグレポートを投稿するときにこのログを含める。
See 項1.7.1.3. 「バグまたは問題を報告する方法」。
mysqld
デーモンがすでに稼動している
この場合は、mysql_install_db
を実行する必要はない。mysql_install_db
は、MySQL を初めてインストールするときに 1
回だけ実行する必要がある。
mysqld
デーモンが稼動しているときに、別の
mysqld
デーモンをインストールできない
この問題は、既存の MySQL
インストールがある場合に、テストのためや、同時に
2
つのインストールを稼動させるために別の場所に新しいインストールを配置するときに発生する。一般に、2
つ目のサーバを実行するときに起きる問題は、そのサーバが既存のサーバと同じソケットやポートを使用しようとすることである。
この場合は、次のエラーメッセージが表示される。Can't
start server: Bind on TCP/IP port: Address already in
use
または Can't start server: Bind on
unix socket...
。 See
項4.2. 「同じマシン上で複数の MySQL サーバを実行する」。
デフォルトの場所(/tmp
内)にあるソケットファイルを作成するための書き込みアクセス権がない場合や、/tmp,
内にテンポラリファイルを作成するためのアクセス権がない場合に、mysql_install_db
の実行時や、mysqld
の起動時または使用時にエラーが表示される。
以下のコマンドを実行して、別のソケットとテンポラリディレクトリを指定することができる。
shell>TMPDIR=/some_tmp_dir/
shell>MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell>export TMPDIR MYSQL_UNIX_PORT
項A.4.5. 「MySQL ソケットファイル /tmp/mysql.sock
の保護または変更方法」 を参照。
some_tmp_dir
には、自分が書き込みアクセス権を持つディレクトリのパスを指定する。
See 付録 F. 環境変数。
この後、以下のコマンドを使用して、mysql_install_db
を実行し、サーバを起動できる。
shell>scripts/mysql_install_db
shell>BINDIR/mysqld_safe &
mysqld
がすぐにクラッシュする
2.0.7-5 より前のバージョンの
glibc
を備えた Red Hat
バージョン 5.0
を実行している場合、glibc
のすべてのパッチがインストールされていることを確認する必要がある。
MySQL
メールアーカイブには、これに関する大量の情報がある。メールアーカイブへのリンクは、http://lists.mysql.com/
からオンラインで利用できる。
項2.6.2. 「Linux の注意事項(すべての Linux バージョン)」 も参照。
また、--skip-grant-tables
オプションを指定して mysqld
を手動で起動し、mysql
を使用して自分で特権情報を追加することもできる。
shell>BINDIR/mysqld_safe --skip-grant-tables &
shell>BINDIR/mysql -u root mysql
mysql
から、mysql_install_db
で SQL
コマンドを手動で実行する。後で、必ず
mysqladmin flush-privileges
またはmysqladmin reload
を実行してサーバに権限テーブルの再ロードを指示する。
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.