1月17日木曜日: 2.4. インストール後の設定とテスト
MySQL をインストールしたら(バイナリディストリビューションまたはソースディストリビューションから)、権限テーブルを初期化して、サーバを起動し、サーバが正常に動作することを確認する必要があります。システムの起動時およびシャットダウン時にサーバが自動的に起動および停止するように設定することもできます。
ソースディストリビューションからインストールする場合は、通常、以下のように権限テーブルをインストールしてサーバを起動します。
shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/mysqld_safe --user=mysql &
バイナリディストリビューション(RPM パッケージまたは pkg パッケージ)の場合は、以下を実行します。
shell> cd mysql_installation_directory
shell> ./scripts/mysql_install_db
shell> ./bin/mysqld_safe --user=mysql &
mysql_install_db スクリプトは、すべての権限を管理する mysql データベースと、MySQL のテストに使用できる test データベースを作成します。さらに、mysql_install_db を実行するユーザと root ユーザの権限エントリも作成します。これらのエントリはパスワードなしで作成されます。 mysqld_safe スクリプトは、mysqld サーバを起動します(バージョン 4.0 より前の MySQL を使用している場合は、mysqld_safe ではなく safe_mysqld を使用します)。
mysql_install_db は、古い権限テーブルを上書きしないので、どのような状況で実行しても安全です。test データベースが必要ない場合は、サーバを起動した後に mysqladmin -u root drop test を使用してこのデータベースを削除することができます。
テストは、MySQL ディストリビューションの最上位ディレクトリから簡単に実行できます。バイナリディストリビューションの場合、最上位ディレクトリはインストールディレクトリです(通常は /usr/local/mysql など)。ソースディストリビューションの場合は、最上位ディレクトリは MySQL ソースツリーのメインディレクトリです。
以下の各項に示されるコマンドでは、BINDIR は mysqladmin や mysqld_safe などのプログラムがインストールされている場所のパスを表します。バイナリディストリビューションの場合、BINDIR はディストリビューション内の bin ディレクトリです。ソースディストリビューションの場合、configure を実行したときに /usr/local 以外のインストールディレクトリを指定していない限り、BINDIR は通常は /usr/local/bin です。 EXECDIR は、mysqld サーバがインストールされている場所です。バイナリディストリビューションの場合、これは BINDIR と同じです。ソースディストリビューションの場合、EXECDIR は通常は /usr/local/libexec です。
テストについて詳細に説明します。
必要に応じて、mysqld サーバを起動して、MySQL 権限テーブルを初期化する。これは、通常 mysql_install_db スクリプトを使用して行う。
shell> scripts/mysql_install_db
MySQL 権限テーブルには、MySQL サーバに接続できるユーザのホストや権限の情報が記録されている。
一般に、mysql_install_db は、初めて MySQL をインストールしたときにのみ実行する必要がある。したがって、既存のインストールをアップグレードする場合は、このステップはスキップできる(ただし、mysql_install_db は使用しても非常に安全で、既存のテーブルを更新することはないので、判断がつかない場合は mysql_install_db を実行してかまわない)。
mysql_install_db は、mysql データベースに 6 つのテーブル(user、db、host、tables_priv、columns_priv、および func)を作成する。初期権限の説明については、項4.4.4. 「MySQL 権限の初期設定」 を参照。 簡単に説明すると、初期権限は、MySQL root ユーザにあらゆる操作を許可し、全ユーザに test という名前か、test_ で始まる名前を持つデータベースを作成または使用する許可を与える。
権限テーブルを設定しないと、サーバを起動したときにログファイルに以下のエラーが記録される。
mysqld: Can't find file: 'host.frm'
MySQL バイナリディストリビューションの場合にも、./bin/mysqld_safe を実行して MySQL を起動しないとこのエラーが発生する。 See 項4.8.2. 「mysqld_safe(mysqld のラッパ)」。
mysql_install_db は、Unix root アカウントで実行する必要があることがある。 ただし、必要に応じて、データベースディレクトリ内のファイルに対して読み取りと書き込みのアクセス権がある一般のアカウント(root 以外の Unix のアカウント)で、 MySQL サーバを実行することもできる。一般のアカウントで MySQL を実行する手順については、項A.3.2. 「一般ユーザで MySQL を実行する方法」を参照。
mysql_install_db で問題が発生する場合は、項2.4.1. 「mysql_install_db の実行に関する問題」 を参照。
MySQL ディストリビューションで提供される mysql_install_db スクリプトを実行する代わりに行えるいくつかの手段がある。
mysql_install_db を実行する前に、このスクリプトを編集して、権限テーブルにインストールされている初期の権限を変更することができる。スクリプトの変更により、同じ権限を持つ複数のマシンに MySQL をインストールする場合に便利である。この場合、通常は、mysql.user テーブルと mysql.db テーブルにいくつかの INSERT ステートメントを追加するだけで済む。
権限テーブルをインストールした後にテーブルの内容を変更する場合は、mysql_install_db を実行して、mysql -u root mysql を使用して MySQL root ユーザとして権限テーブルに接続し、SQL ステートメントを発行して権限テーブルを直接修正する。
作成済みの権限テーブルを完全に作成し直すことができる。テーブルをすでにインストールしており、mysql_install_db を編集した後に作成し直す場合に、これを行う必要がある。
これらの代替手段の詳細については、項4.4.4. 「MySQL 権限の初期設定」 を参照。
以下のように MySQL サーバを起動する。
shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
バージョン 4.0 より前の MySQL を使用している場合は、最後のコマンドの bin/mysqld_safe を bin/safe_mysqld に置き換える。
サーバの起動時に問題が発生した場合は、項2.4.2. 「MySQL サーバの起動に関する問題」 を参照。
mysqladmin を使用して、サーバが稼動していることを確認する。以下のコマンドによって、サーバが稼動しており接続に応答していることをチェックするための簡単なテストが実行される。
shell> BINDIR/mysqladmin version
shell> BINDIR/mysqladmin variables
mysqladmin version からの出力は、使用しているプラットフォームと MySQL のバージョンによって少し異なるが、以下に示したものと類似した内容となる。
shell> BINDIR/mysqladmin version
mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license.
Server version 3.23.32-debug
Protocol version 10
Connection Localhost via Unix socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Threads: 1 Questions: 9 Slow queries: 0
Opens: 7 Flush tables: 2 Open tables: 0
Queries per second avg: 0.000
Memory in use: 132K Max memory used: 16773K
BINDIR/mysqladmin を使用するとほかにどのようなことが行えるのかを把握するには、--help オプションを指定して起動する。
サーバをシャットダウンできるかどうかを確認する。
shell> BINDIR/mysqladmin -u root shutdown
サーバを再起動できるかどうかを確認します。この確認は、mysqld_safe を使用するか、直接 mysqld を起動して行う。以下に例を示す。
shell> BINDIR/mysqld_safe --log &
mysqld_safe が失敗した場合は、MySQL のインストールディレクトリから実行する(インストールディレクトリ以外のディレクトリに移動している場合)。それでも失敗する場合は、項2.4.2. 「MySQL サーバの起動に関する問題」 を参照。
いくつかの簡単なテストを実行して、サーバが稼動していることを確認する。 出力は、以下に示すものと類似した内容になる。
shell> BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+
shell> BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+
shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
また、sql-bench ディレクトリ(MySQL インストールディレクトリの下)に、ベンチマークスィートがある。このベンチマークスィートを使用すると、各種のプラットフォーム上での MySQL の動作を比較できる。ベンチマークスィートは、Perl で記述されており、Perl DBI モジュールを使用してデータベースに依存しないインタフェースを各種のデータベースに提供する。ベンチマークスィートを実行するには、以下の追加の Perl モジュールが必要である。
DBI
DBD-mysql
Data-Dumper
Data-ShowTable
これらのモジュールは、CPAN(http://www.cpan.org/)から入手できる。 See 項2.7.1. 「Unix への Perl のインストール」。
sql-bench/Results ディレクトリには、さまざまなデータベースやプラットフォームのベンチマークスィートの実行結果が含まれている。すべてのテストを実行するには、以下のコマンドを実行する。
shell> cd sql-bench
shell> run-all-tests
sql-bench ディレクトリがない場合は、バイナリディストリビューション用の RPM を使用している可能性がある(ソースディストリビューションの RPM にはベンチマークディレクトリが含まれている)。その場合、ベンチマークスィートを使用するには、最初にベンチマークスィートをインストールする必要がある。MySQL バージョン 3.22 以降では、ベンチマークのコードとデータが含まれた mysql-bench-VERSION-i386.rpm という名前のベンチマーク RPM ファイルがある。
ソースディストリビューションを使用している場合は、tests サブディレクトリにあるテストを実行することもできる。たとえば、auto_increment.tst を実行するには、以下のコマンドを実行する。
shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
結果は、./tests/auto_increment.res ファイルに出力される。
ソースディストリビューションからインストールする場合は、通常、以下のように権限テーブルをインストールしてサーバを起動します。
shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/mysqld_safe --user=mysql &
バイナリディストリビューション(RPM パッケージまたは pkg パッケージ)の場合は、以下を実行します。
shell> cd mysql_installation_directory
shell> ./scripts/mysql_install_db
shell> ./bin/mysqld_safe --user=mysql &
mysql_install_db スクリプトは、すべての権限を管理する mysql データベースと、MySQL のテストに使用できる test データベースを作成します。さらに、mysql_install_db を実行するユーザと root ユーザの権限エントリも作成します。これらのエントリはパスワードなしで作成されます。 mysqld_safe スクリプトは、mysqld サーバを起動します(バージョン 4.0 より前の MySQL を使用している場合は、mysqld_safe ではなく safe_mysqld を使用します)。
mysql_install_db は、古い権限テーブルを上書きしないので、どのような状況で実行しても安全です。test データベースが必要ない場合は、サーバを起動した後に mysqladmin -u root drop test を使用してこのデータベースを削除することができます。
テストは、MySQL ディストリビューションの最上位ディレクトリから簡単に実行できます。バイナリディストリビューションの場合、最上位ディレクトリはインストールディレクトリです(通常は /usr/local/mysql など)。ソースディストリビューションの場合は、最上位ディレクトリは MySQL ソースツリーのメインディレクトリです。
以下の各項に示されるコマンドでは、BINDIR は mysqladmin や mysqld_safe などのプログラムがインストールされている場所のパスを表します。バイナリディストリビューションの場合、BINDIR はディストリビューション内の bin ディレクトリです。ソースディストリビューションの場合、configure を実行したときに /usr/local 以外のインストールディレクトリを指定していない限り、BINDIR は通常は /usr/local/bin です。 EXECDIR は、mysqld サーバがインストールされている場所です。バイナリディストリビューションの場合、これは BINDIR と同じです。ソースディストリビューションの場合、EXECDIR は通常は /usr/local/libexec です。
テストについて詳細に説明します。
必要に応じて、mysqld サーバを起動して、MySQL 権限テーブルを初期化する。これは、通常 mysql_install_db スクリプトを使用して行う。
shell> scripts/mysql_install_db
MySQL 権限テーブルには、MySQL サーバに接続できるユーザのホストや権限の情報が記録されている。
一般に、mysql_install_db は、初めて MySQL をインストールしたときにのみ実行する必要がある。したがって、既存のインストールをアップグレードする場合は、このステップはスキップできる(ただし、mysql_install_db は使用しても非常に安全で、既存のテーブルを更新することはないので、判断がつかない場合は mysql_install_db を実行してかまわない)。
mysql_install_db は、mysql データベースに 6 つのテーブル(user、db、host、tables_priv、columns_priv、および func)を作成する。初期権限の説明については、項4.4.4. 「MySQL 権限の初期設定」 を参照。 簡単に説明すると、初期権限は、MySQL root ユーザにあらゆる操作を許可し、全ユーザに test という名前か、test_ で始まる名前を持つデータベースを作成または使用する許可を与える。
権限テーブルを設定しないと、サーバを起動したときにログファイルに以下のエラーが記録される。
mysqld: Can't find file: 'host.frm'
MySQL バイナリディストリビューションの場合にも、./bin/mysqld_safe を実行して MySQL を起動しないとこのエラーが発生する。 See 項4.8.2. 「mysqld_safe(mysqld のラッパ)」。
mysql_install_db は、Unix root アカウントで実行する必要があることがある。 ただし、必要に応じて、データベースディレクトリ内のファイルに対して読み取りと書き込みのアクセス権がある一般のアカウント(root 以外の Unix のアカウント)で、 MySQL サーバを実行することもできる。一般のアカウントで MySQL を実行する手順については、項A.3.2. 「一般ユーザで MySQL を実行する方法」を参照。
mysql_install_db で問題が発生する場合は、項2.4.1. 「mysql_install_db の実行に関する問題」 を参照。
MySQL ディストリビューションで提供される mysql_install_db スクリプトを実行する代わりに行えるいくつかの手段がある。
mysql_install_db を実行する前に、このスクリプトを編集して、権限テーブルにインストールされている初期の権限を変更することができる。スクリプトの変更により、同じ権限を持つ複数のマシンに MySQL をインストールする場合に便利である。この場合、通常は、mysql.user テーブルと mysql.db テーブルにいくつかの INSERT ステートメントを追加するだけで済む。
権限テーブルをインストールした後にテーブルの内容を変更する場合は、mysql_install_db を実行して、mysql -u root mysql を使用して MySQL root ユーザとして権限テーブルに接続し、SQL ステートメントを発行して権限テーブルを直接修正する。
作成済みの権限テーブルを完全に作成し直すことができる。テーブルをすでにインストールしており、mysql_install_db を編集した後に作成し直す場合に、これを行う必要がある。
これらの代替手段の詳細については、項4.4.4. 「MySQL 権限の初期設定」 を参照。
以下のように MySQL サーバを起動する。
shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
バージョン 4.0 より前の MySQL を使用している場合は、最後のコマンドの bin/mysqld_safe を bin/safe_mysqld に置き換える。
サーバの起動時に問題が発生した場合は、項2.4.2. 「MySQL サーバの起動に関する問題」 を参照。
mysqladmin を使用して、サーバが稼動していることを確認する。以下のコマンドによって、サーバが稼動しており接続に応答していることをチェックするための簡単なテストが実行される。
shell> BINDIR/mysqladmin version
shell> BINDIR/mysqladmin variables
mysqladmin version からの出力は、使用しているプラットフォームと MySQL のバージョンによって少し異なるが、以下に示したものと類似した内容となる。
shell> BINDIR/mysqladmin version
mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license.
Server version 3.23.32-debug
Protocol version 10
Connection Localhost via Unix socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Threads: 1 Questions: 9 Slow queries: 0
Opens: 7 Flush tables: 2 Open tables: 0
Queries per second avg: 0.000
Memory in use: 132K Max memory used: 16773K
BINDIR/mysqladmin を使用するとほかにどのようなことが行えるのかを把握するには、--help オプションを指定して起動する。
サーバをシャットダウンできるかどうかを確認する。
shell> BINDIR/mysqladmin -u root shutdown
サーバを再起動できるかどうかを確認します。この確認は、mysqld_safe を使用するか、直接 mysqld を起動して行う。以下に例を示す。
shell> BINDIR/mysqld_safe --log &
mysqld_safe が失敗した場合は、MySQL のインストールディレクトリから実行する(インストールディレクトリ以外のディレクトリに移動している場合)。それでも失敗する場合は、項2.4.2. 「MySQL サーバの起動に関する問題」 を参照。
いくつかの簡単なテストを実行して、サーバが稼動していることを確認する。 出力は、以下に示すものと類似した内容になる。
shell> BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+
shell> BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+
shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
また、sql-bench ディレクトリ(MySQL インストールディレクトリの下)に、ベンチマークスィートがある。このベンチマークスィートを使用すると、各種のプラットフォーム上での MySQL の動作を比較できる。ベンチマークスィートは、Perl で記述されており、Perl DBI モジュールを使用してデータベースに依存しないインタフェースを各種のデータベースに提供する。ベンチマークスィートを実行するには、以下の追加の Perl モジュールが必要である。
DBI
DBD-mysql
Data-Dumper
Data-ShowTable
これらのモジュールは、CPAN(http://www.cpan.org/)から入手できる。 See 項2.7.1. 「Unix への Perl のインストール」。
sql-bench/Results ディレクトリには、さまざまなデータベースやプラットフォームのベンチマークスィートの実行結果が含まれている。すべてのテストを実行するには、以下のコマンドを実行する。
shell> cd sql-bench
shell> run-all-tests
sql-bench ディレクトリがない場合は、バイナリディストリビューション用の RPM を使用している可能性がある(ソースディストリビューションの RPM にはベンチマークディレクトリが含まれている)。その場合、ベンチマークスィートを使用するには、最初にベンチマークスィートをインストールする必要がある。MySQL バージョン 3.22 以降では、ベンチマークのコードとデータが含まれた mysql-bench-VERSION-i386.rpm という名前のベンチマーク RPM ファイルがある。
ソースディストリビューションを使用している場合は、tests サブディレクトリにあるテストを実行することもできる。たとえば、auto_increment.tst を実行するには、以下のコマンドを実行する。
shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
結果は、./tests/auto_increment.res ファイルに出力される。
1月16日水曜日: 2.3.7. Windows 上でソースから MySQL をインストールする
ここでは、Windows 上でバージョン 4.1 以降のソースから MySQL バイナリをビルドする方法を説明します。標準のソースディストリビューションまたは最新の開発ソースが格納されている BitKeeper ツリーからバイナリをビルドする場合の手順が記載されています。
注意: ここに記載されている手順は、最新のソースディストリビューションまたは BitKeeper ツリーで入手した MySQL を Windows 上でテストするユーザだけを対象としています。 自分でソースからビルドした MySQL サーバを実稼動環境で使用することはお勧めしません。通常、最も望ましいのは、MySQL AB が特に Windows 上で最適なパフォーマンスを達成するようにビルドした、プリコンパイルされた MySQL バイナリディストリビューションを使用することです。 バイナリディストリビューションのインストール手順については、項2.1.1. 「Windows への MySQL のインストール」 を参照してください。
Windows 上で MySQL をビルドするには、使用している Windows システムに以下のコンパイラとリソースがなければなりません。
VC++ 6.0 コンパイラ(SP 4 または 5 とプリプロセッサパッケージで更新したもの)。 プリプロセッサパッケージは、マクロアセンブラにとって必要である。 詳細については、以下のサイトを参照。
注意: ここに記載されている手順は、最新のソースディストリビューションまたは BitKeeper ツリーで入手した MySQL を Windows 上でテストするユーザだけを対象としています。 自分でソースからビルドした MySQL サーバを実稼動環境で使用することはお勧めしません。通常、最も望ましいのは、MySQL AB が特に Windows 上で最適なパフォーマンスを達成するようにビルドした、プリコンパイルされた MySQL バイナリディストリビューションを使用することです。 バイナリディストリビューションのインストール手順については、項2.1.1. 「Windows への MySQL のインストール」 を参照してください。
Windows 上で MySQL をビルドするには、使用している Windows システムに以下のコンパイラとリソースがなければなりません。
VC++ 6.0 コンパイラ(SP 4 または 5 とプリプロセッサパッケージで更新したもの)。 プリプロセッサパッケージは、マクロアセンブラにとって必要である。 詳細については、以下のサイトを参照。
現在の BitKeeper ソースツリーから最新の Windows ソースパッケージをビルドするには、以下の手順で行います。 注意: この手順は、Unix または Unix ライクなオペレーティングシステムを実行しているシステム上で行う必要があります(この手順は、Linux などの場合に有効であることが知られています)。
MySQL の BitKeeper ソースツリーをコピーする(必要に応じて、バージョン 4.1 以降)。ソースツリーのコピー方法の詳細については、項2.3.4. 「開発ソースツリーからのインストール」の説明を参照。
サーババイナリが必要なため、ディストリビューションをコンフィギャしてビルドする。これを行う 1 つの方法は、ソースツリーの最上位ディレクトリで以下のコマンドを実行することである。
shell> ./BUILD/compile-pentium-max
ビルドプロセスが正常に完了したことを確認したら、ソースツリーの最上位ディレクトリから以下のユーティリティスクリプトを実行する。
shell> ./scripts/make_win_src_distribution
このスクリプトによって、Windows システム上で使用する Windows ソースパッケージが作成される。必要に応じて、このスクリプトに別のオプションを指定することができる。指定できるオプションは以下のとおりである。
--debug デバッグ。パッケージは作成しない。
--tmp tmp を指定する。
--suffix パッケージの名前のサフィックスを指定。
--dirname ファイルをコピーするディレクトリ名。
--silent ファイルの処理経過の詳細を出力しない。
--tar tar.gz パッケージを .zip パッケージの代わりに作成。
--help ヘルプの表示。
デフォルトでは、make_win_src_distribution は、mysql-VERSION-win-src.zip という名前の zip 形式の圧縮アーカイブを作成する。この場合、VERSION は 使用している MySQL ソースツリーのバージョンを表す。
作成した Windows ソースパッケージを Windows マシンにコピーまたはアップロードする。ソースパッケージのコンパイルは、項2.3.7.1. 「VC++ を使用した MySQL のビルド」 に記載されている手順で行う。
MySQL の BitKeeper ソースツリーをコピーする(必要に応じて、バージョン 4.1 以降)。ソースツリーのコピー方法の詳細については、項2.3.4. 「開発ソースツリーからのインストール」の説明を参照。
サーババイナリが必要なため、ディストリビューションをコンフィギャしてビルドする。これを行う 1 つの方法は、ソースツリーの最上位ディレクトリで以下のコマンドを実行することである。
shell> ./BUILD/compile-pentium-max
ビルドプロセスが正常に完了したことを確認したら、ソースツリーの最上位ディレクトリから以下のユーティリティスクリプトを実行する。
shell> ./scripts/make_win_src_distribution
このスクリプトによって、Windows システム上で使用する Windows ソースパッケージが作成される。必要に応じて、このスクリプトに別のオプションを指定することができる。指定できるオプションは以下のとおりである。
--debug デバッグ。パッケージは作成しない。
--tmp tmp を指定する。
--suffix パッケージの名前のサフィックスを指定。
--dirname ファイルをコピーするディレクトリ名。
--silent ファイルの処理経過の詳細を出力しない。
--tar tar.gz パッケージを .zip パッケージの代わりに作成。
--help ヘルプの表示。
デフォルトでは、make_win_src_distribution は、mysql-VERSION-win-src.zip という名前の zip 形式の圧縮アーカイブを作成する。この場合、VERSION は 使用している MySQL ソースツリーのバージョンを表す。
作成した Windows ソースパッケージを Windows マシンにコピーまたはアップロードする。ソースパッケージのコンパイルは、項2.3.7.1. 「VC++ を使用した MySQL のビルド」 に記載されている手順で行う。
1月16日水曜日: 2.3.7.1. VC++ を使用した MySQL のビルド
注意: MySQL 4.1 以降の VC++ ワークスペースファイルは、Microsoft Visual Studio 6.0 以降(7.0/.NET)のバージョンと互換性があり、リリース前に MySQL AB のスタッフによってテストされています。
MySQL のビルドは、以下の手順で行います。
作業ディレクトリを作成する(workdir など)。
WinZip か、.zip ファイルを読み取ることのできるその他の Windows ツールを使用して、上記のディレクトリにソースディストリビューションをアンパックする。
VC++ 6.0 コンパイラを起動する。
[File]メニューで、[Open Workspace]を選択する。
作業ディレクトリにある mysql.dsw ワークスペースを開く。
[Build]メニューで、[Set Active Configuration]メニューを選択する。
画面上でクリックして、[mysqld - Win32 Debug]を選択し、[OK]をクリックする。
F7 キーを押し、デバッグサーバ、ライブラリ、およびクライアントアプリケーションのビルドを開始する。
同様に、必要なリリースバージョンをコンパイルする。
プログラムおよびライブラリのデバッグバージョンは、client_debug ディレクトリおよび lib_debug ディレクトリにある。 プログラムおよびライブラリのリリースバージョンは、client_release ディレクトリおよび lib_release ディレクトリにある。 注意: デバッグバージョンとリリースバージョンの両方をビルドする場合は、[Build]メニューで[build all]オプションを選択する。
サーバをテストする。上記の手順でビルドしたサーバでは、デフォルトで MySQL ベースディレクトリとデータディレクトリが C:\mysql および C:\mysql\data であると想定される。ソースツリーのルートディレクトリとそのデータディレクトリをベースディレクトリおよびデータディレクトリとして使用してサーバをテストする場合は、サーバにそれらのパス名を通知する必要がある。この処理を行うには、コマンドラインで --basedir オプションと --datadir オプションを指定するか、オプション設定ファイル(Windows ディレクトリにある C:\my.cnf ファイルまたは my.ini ファイル)に適切なオプションを配置する。使用したい既存のデータディレクトリが別の場所にある場合は、そのパス名を指定する。
使用するサーバに応じて、client_release ディレクトリまたは client_debug ディレクトリからサーバを起動する。一般的なサーバの起動手順については、項2.1.1. 「Windows への MySQL のインストール」 を参照。 別のベースディレクトリまたはデータディレクトリを使用する場合は、それに合わせて手順を変更する必要がある。
設定に基づいてサーバがスタンドアロンまたはサービスとして稼動しているときに、client_release ディレクトリまたは client_debug ディレクトリにある mysql の対話型コマンドラインユーティリティからそのサーバに接続する。
ビルドしたプログラムが正しく動作することを確認したら、サーバを停止します。次に、以下の手順で MySQL をインストールします。
MySQL をインストールするディレクトリを作成する。たとえば、C:\mysql にインストールする場合は、以下のコマンドを使用する。
C:
mkdir \mysql
mkdir \mysql\bin
mkdir \mysql\data
mkdir \mysql\share
mkdir \mysql\scripts
その他のクライアントをコンパイルして MySQL にリンクする場合は、追加のディレクトリも作成する。
mkdir \mysql\include
mkdir \mysql\lib
mkdir \mysql\lib\debug
mkdir \mysql\lib\opt
MySQL のベンチマークを実行する場合は、以下のディレクトリを作成する。
mkdir \mysql\sql-bench
ベンチマークを実行するには、Perl が必要である。
workdir ディレクトリから以下のディレクトリを C:\mysql ディレクトリにコピーする。
copy client_release\*.exe C:\mysql\bin
copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
xcopy scripts\*.* C:\mysql\scripts /E
xcopy share\*.* C:\mysql\share /E
その他のクライアントをコンパイルして MySQL にリンクする場合は、以下のコマンドも実行する。
copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
copy lib_debug\libmysql.* C:\mysql\lib\debug
copy lib_debug\zlib.* C:\mysql\lib\debug
copy lib_release\mysqlclient.lib C:\mysql\lib\opt
copy lib_release\libmysql.* C:\mysql\lib\opt
copy lib_release\zlib.* C:\mysql\lib\opt
copy include\*.h C:\mysql\include
copy libmysql\libmysql.def C:\mysql\include
MySQL のベンチマークを実行する場合は、以下のコマンドも実行する。
xcopy sql-bench\*.* C:\mysql\bench /E
MySQL のビルドは、以下の手順で行います。
作業ディレクトリを作成する(workdir など)。
WinZip か、.zip ファイルを読み取ることのできるその他の Windows ツールを使用して、上記のディレクトリにソースディストリビューションをアンパックする。
VC++ 6.0 コンパイラを起動する。
[File]メニューで、[Open Workspace]を選択する。
作業ディレクトリにある mysql.dsw ワークスペースを開く。
[Build]メニューで、[Set Active Configuration]メニューを選択する。
画面上でクリックして、[mysqld - Win32 Debug]を選択し、[OK]をクリックする。
F7 キーを押し、デバッグサーバ、ライブラリ、およびクライアントアプリケーションのビルドを開始する。
同様に、必要なリリースバージョンをコンパイルする。
プログラムおよびライブラリのデバッグバージョンは、client_debug ディレクトリおよび lib_debug ディレクトリにある。 プログラムおよびライブラリのリリースバージョンは、client_release ディレクトリおよび lib_release ディレクトリにある。 注意: デバッグバージョンとリリースバージョンの両方をビルドする場合は、[Build]メニューで[build all]オプションを選択する。
サーバをテストする。上記の手順でビルドしたサーバでは、デフォルトで MySQL ベースディレクトリとデータディレクトリが C:\mysql および C:\mysql\data であると想定される。ソースツリーのルートディレクトリとそのデータディレクトリをベースディレクトリおよびデータディレクトリとして使用してサーバをテストする場合は、サーバにそれらのパス名を通知する必要がある。この処理を行うには、コマンドラインで --basedir オプションと --datadir オプションを指定するか、オプション設定ファイル(Windows ディレクトリにある C:\my.cnf ファイルまたは my.ini ファイル)に適切なオプションを配置する。使用したい既存のデータディレクトリが別の場所にある場合は、そのパス名を指定する。
使用するサーバに応じて、client_release ディレクトリまたは client_debug ディレクトリからサーバを起動する。一般的なサーバの起動手順については、項2.1.1. 「Windows への MySQL のインストール」 を参照。 別のベースディレクトリまたはデータディレクトリを使用する場合は、それに合わせて手順を変更する必要がある。
設定に基づいてサーバがスタンドアロンまたはサービスとして稼動しているときに、client_release ディレクトリまたは client_debug ディレクトリにある mysql の対話型コマンドラインユーティリティからそのサーバに接続する。
ビルドしたプログラムが正しく動作することを確認したら、サーバを停止します。次に、以下の手順で MySQL をインストールします。
MySQL をインストールするディレクトリを作成する。たとえば、C:\mysql にインストールする場合は、以下のコマンドを使用する。
C:
mkdir \mysql
mkdir \mysql\bin
mkdir \mysql\data
mkdir \mysql\share
mkdir \mysql\scripts
その他のクライアントをコンパイルして MySQL にリンクする場合は、追加のディレクトリも作成する。
mkdir \mysql\include
mkdir \mysql\lib
mkdir \mysql\lib\debug
mkdir \mysql\lib\opt
MySQL のベンチマークを実行する場合は、以下のディレクトリを作成する。
mkdir \mysql\sql-bench
ベンチマークを実行するには、Perl が必要である。
workdir ディレクトリから以下のディレクトリを C:\mysql ディレクトリにコピーする。
copy client_release\*.exe C:\mysql\bin
copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
xcopy scripts\*.* C:\mysql\scripts /E
xcopy share\*.* C:\mysql\share /E
その他のクライアントをコンパイルして MySQL にリンクする場合は、以下のコマンドも実行する。
copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
copy lib_debug\libmysql.* C:\mysql\lib\debug
copy lib_debug\zlib.* C:\mysql\lib\debug
copy lib_release\mysqlclient.lib C:\mysql\lib\opt
copy lib_release\libmysql.* C:\mysql\lib\opt
copy lib_release\zlib.* C:\mysql\lib\opt
copy include\*.h C:\mysql\include
copy libmysql\libmysql.def C:\mysql\include
MySQL のベンチマークを実行する場合は、以下のコマンドも実行する。
xcopy sql-bench\*.* C:\mysql\bench /E
1月16日水曜日: 2.3.6. MIT-pthreads に関する注意事項
ここでは、MIT-pthreads の使用に関係するいくつかの問題を説明します。
注意: Linux では、MIT-pthreads を使用しないで、インストールされている LinuxThreads 実装を使用してください。 See 項2.6.2. 「Linux の注意事項(すべての Linux バージョン)」。
システムにネイティブスレッドサポートが用意されていない場合は、MIT-pthreads パッケージを使用して MySQL をビルドする必要があります。そのようなシステムとしては、旧バージョンの FreeBSD システム、SunOS 4.x、Solaris 2.4 以前などがあります。 See 項2.2.3. 「MySQL がサポートしているオペレーティングシステム」。
注意: MySQL 4.0.2 からは、ソースディストリビューションに MIT-pthreads は含まれていません。このパッケージが必要な場合は、http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz から別にダウンロードしてください。
ダウンロードしたら、このソースアーカイブを MySQL ソースディレクトリの最上位で展開します。これによって、mit-pthreads というサブディレクトリが新しく作成されます。
ほとんどシステムでは、--with-mit-threads オプションを指定して configure を実行して、強制的に MIT-pthreads を使用させることができる。
shell> ./configure --with-mit-threads
MIT-pthreads を使用している場合は、このコードへの変更を最小限に抑えたいので、ソースディレクトリ以外の場所へのビルドはサポートされていない。
MIT-pthreads を使用するかどうかを判断するチェックは、サーバコードを処理する設定プロセスの一環としてしか行われない。--without-server を使用してディストリビューションをコンフィギャしてクライアントコードだけをビルドした場合は、クライアントは MIT-pthreads を使用するかどうかを判断できず、デフォルトで Unix ソケット接続を使用する。 一部のプラットフォームでは、MIT-pthreads のもとで Unix ソケットが機能しないため、クライアントプログラムを実行するときに -h または --host を使用する必要がある。
MIT-pthreads を使用して MySQL をコンパイルした場合は、パフォーマンス上の理由から、デフォルトでシステムロックが無効になる。--external-locking オプションを使用して、システムロックの使用をサーバに指示することができる。これは、同じデータファイルに対して 2 つの MySQL サーバを実行できるようにする場合にのみ必要である(このような処理は推奨しない)。
pthread bind() コマンドがソケットへのバインドに失敗し、エラーメッセージが表示されないことがある(これは、少なくとも Solaris 上では発生する)。したがって、サーバへのすべての接続が失敗するということになる。以下に例を示す。
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
この問題の解決策は、mysqld サーバを強制終了して再起動することである。 これは、当社でサーバを強制的に停止してすぐに再起動したときに、偶然見つかった方法である。
MIT-pthreadsでは、sleep() システムコールに対して SIGINT(ブレーク)による割り込みを行うことはできない。これは、mysqladmin --sleep を実行したときにのみわかる。sleep() コールが終了してから、割り込みが実行されプロセスが停止する。
リンク時に、以下のような警告メッセージが表示されることがある(少なくとも Solaris では発生する)。これらのメッセージは無視してかまわない。
ld: warning: symbol `_iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
そのほかに、以下のような警告も無視してかまわない。
implicit declaration of function `int strtoll(...)'
implicit declaration of function `int strtoul(...)'
MIT-pthreads と連携して動作する readline はまだない(これは、必要のないものであるが、興味のあるユーザもいるかもしれない)。
注意: Linux では、MIT-pthreads を使用しないで、インストールされている LinuxThreads 実装を使用してください。 See 項2.6.2. 「Linux の注意事項(すべての Linux バージョン)」。
システムにネイティブスレッドサポートが用意されていない場合は、MIT-pthreads パッケージを使用して MySQL をビルドする必要があります。そのようなシステムとしては、旧バージョンの FreeBSD システム、SunOS 4.x、Solaris 2.4 以前などがあります。 See 項2.2.3. 「MySQL がサポートしているオペレーティングシステム」。
注意: MySQL 4.0.2 からは、ソースディストリビューションに MIT-pthreads は含まれていません。このパッケージが必要な場合は、http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz から別にダウンロードしてください。
ダウンロードしたら、このソースアーカイブを MySQL ソースディレクトリの最上位で展開します。これによって、mit-pthreads というサブディレクトリが新しく作成されます。
ほとんどシステムでは、--with-mit-threads オプションを指定して configure を実行して、強制的に MIT-pthreads を使用させることができる。
shell> ./configure --with-mit-threads
MIT-pthreads を使用している場合は、このコードへの変更を最小限に抑えたいので、ソースディレクトリ以外の場所へのビルドはサポートされていない。
MIT-pthreads を使用するかどうかを判断するチェックは、サーバコードを処理する設定プロセスの一環としてしか行われない。--without-server を使用してディストリビューションをコンフィギャしてクライアントコードだけをビルドした場合は、クライアントは MIT-pthreads を使用するかどうかを判断できず、デフォルトで Unix ソケット接続を使用する。 一部のプラットフォームでは、MIT-pthreads のもとで Unix ソケットが機能しないため、クライアントプログラムを実行するときに -h または --host を使用する必要がある。
MIT-pthreads を使用して MySQL をコンパイルした場合は、パフォーマンス上の理由から、デフォルトでシステムロックが無効になる。--external-locking オプションを使用して、システムロックの使用をサーバに指示することができる。これは、同じデータファイルに対して 2 つの MySQL サーバを実行できるようにする場合にのみ必要である(このような処理は推奨しない)。
pthread bind() コマンドがソケットへのバインドに失敗し、エラーメッセージが表示されないことがある(これは、少なくとも Solaris 上では発生する)。したがって、サーバへのすべての接続が失敗するということになる。以下に例を示す。
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
この問題の解決策は、mysqld サーバを強制終了して再起動することである。 これは、当社でサーバを強制的に停止してすぐに再起動したときに、偶然見つかった方法である。
MIT-pthreadsでは、sleep() システムコールに対して SIGINT(ブレーク)による割り込みを行うことはできない。これは、mysqladmin --sleep を実行したときにのみわかる。sleep() コールが終了してから、割り込みが実行されプロセスが停止する。
リンク時に、以下のような警告メッセージが表示されることがある(少なくとも Solaris では発生する)。これらのメッセージは無視してかまわない。
ld: warning: symbol `_iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
(file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
/my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
そのほかに、以下のような警告も無視してかまわない。
implicit declaration of function `int strtoll(...)'
implicit declaration of function `int strtoul(...)'
MIT-pthreads と連携して動作する readline はまだない(これは、必要のないものであるが、興味のあるユーザもいるかもしれない)。
1月11日金曜日: 2.3.5. MySQL のコンパイルに関する問題への対処
すべての MySQL プログラムは、gcc を使用して、Solaris または Linux 上で警告を受け取ることなくきれいにコンパイルできます。他のシステム上では、システムインクルードファイルの違いが原因で警告が発生することがあります。MIT-pthreads を使用している場合に発生する可能性のある警告については、項2.3.6. 「MIT-pthreads に関する注意事項」 を参照してください。それ以外の問題については、以下の一覧をチェックしてください。
多くの問題は、解決に再 configure が必要です。再 configure が必要な場合は、以下の点に留意してください。
configure を 1 度実行した後にもう 1 度実行すると、前回の起動時に収集した情報を使用することがある。この情報は、config.cache に格納されている。configure は、起動時にこのファイルを探し、ファイルが存在する場合は、その情報が現在も適切であるものと想定してファイルの内容を読み取る。再 configure する場合は、この想定は無効である。
configure を実行するたびに make を実行して再コンパイルする必要がある。ただし、以前のビルドの古いオブジェクトファイルは別の設定オプションを使用してコンパイルされているので、最初にそれらのオブジェクトファイルを削除する必要がある。
古い検出情報やオブジェクトファイルが使用されるのを防ぐために、configure を再実行する前に以下のコマンドを実行します。
shell> rm config.cache
shell> make clean
または、make distclean を実行します。
以下の一覧で、MySQL のコンパイル時によく発生することがわかっているいくつかの問題を説明します。
sql_yacc.cc のコンパイル時にここに示されているようなエラーが発生した場合は、メモリまたはスワップ領域が不足している可能性がある。
Internal compiler error: program cc1plus got fatal signal 11
か
Out of virtual memory
か
Virtual memory exhausted
ここで問題なのは、gcc がインライン関数を備えた sql_yacc.cc をコンパイルするために大量のメモリを必要とすることである。--with-low-memory オプションを指定して configure を実行する。
shell> ./configure --with-low-memory
このオプションによって、gcc を使用している場合は -fno-inline、それ以外のコンパイラを使用している場合は -O0 がコンパイル行に追加される。メモリとスワップ領域が十分にあり、不足することはないと思われる場合でも、--with-low-memory オプションを試してみる。この問題は、メモリの豊富なハードウェア構成のシステム上でも発生することがわかっており、通常は --with-low-memory オプションを指定することで修正される。
デフォルトでは、configure はコンパイラ名として c++ を選び、GNU c++ は -lg++ をリンクする。gcc を使用している場合は、その動作によってコンフィギャ時に以下のような問題が発生することがある。
configure: error: installation or configuration problem:
C++ compiler cannot create executables.
g++、libg++、または libstdc++ に関連したコンパイル時の問題が発生することもある。
これらの問題の原因の 1 つは、g++ がないか、g++ があっても libg++ または libstdc++ がないことである。config.log ファイルを調べると、このファイルに、C++ コンパイラが機能しない正確な理由が記述されているはずである。これらの問題に対処するために、C++ コンパイラとして gcc を使用することができる。環境変数 CXX を "gcc -O3" にする。たとえば、以下のように指定する。
shell> CXX="gcc -O3" ./configure
gcc は、g++ と同様に C++ ソースをコンパイルするが、デフォルトでは libg++ または libstdc++ にはリンクしない。
当然ながら、これらの問題を修正するもう 1 つの方法は、g++、libg++、および libstdc++ をインストールすることである。しかし、libg++ または libstdc++ を MySQL と共に使用することはお勧めしない。mysqld のバイナリサイズを増やすだけで何の利点もないためである。 これらのライブラリのバージョンの中には、MySQL ユーザにとって未知の問題を過去に引き起こしたものもある。
GNU gcc バージョン 3 以降を使用しており、RAID 機能(RAID テーブル型の詳細については 項6.5.3. 「CREATE TABLE 構文」 を参照)を組み込んだ MySQL をコンパイルする場合も、C++ コンパイラとして gcc を使用する必要がある。--with-raid オプションを使用してコンパイルするように MySQL をコンフィギャしているときに、リンク段階で以下のいずれかのようなエラーが発生した場合は、前述の環境変数 CXX を定義して C++ コンパイラとして gcc を使用してみる。
gcc -O3 -DDBUG_OFF -rdynamic -o isamchk isamchk.o sort.o libnisam.a
../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a -lpthread
-lz -lcrypt -lnsl -lm -lpthread
../mysys/libmysys.a(raid.o)(.text+0x79): In function `my_raid_create':
: undefined reference to `operator new(unsigned)'
../mysys/libmysys.a(raid.o)(.text+0xdd): In function `my_raid_create':
: undefined reference to `operator delete(void*)'
../mysys/libmysys.a(raid.o)(.text+0x129): In function `my_raid_open':
: undefined reference to `operator new(unsigned)'
../mysys/libmysys.a(raid.o)(.text+0x189): In function `my_raid_open':
: undefined reference to `operator delete(void*)'
../mysys/libmysys.a(raid.o)(.text+0x64b): In function `my_raid_close':
: undefined reference to `operator delete(void*)'
collect2: ld returned 1 exit status
以下のいずれかのようなエラーでコンパイルが失敗した場合は、make のバージョンを GNU make にアップグレードする必要がある。
making all in mit-pthreads
make: Fatal error in reader: Makefile, line 18:
Badly formed macro assignment
か
make: file `Makefile' line 18: Must be a separator (:
か
pthread.h: No such file or directory
Solaris と FreeBSD は、複雑な make プログラムが組み込まれていることで知られている。
GNU make バージョン 3.75 は、正常に機能することが知られている。
C コンパイラまたはC++ コンパイラが使用するフラグを定義する場合は、CFLAGS および CXXFLAGS という環境変数にそれらのフラグを追加して定義する。同様に、CC および CXX を使用してコンパイラ名を指定することもできる。以下に例を示す。
shell> CC=gcc
shell> CFLAGS=-O3
shell> CXX=gcc
shell> CXXFLAGS=-O3
shell> export CC CFLAGS CXX CXXFLAGS
さまざまなシステムで有用であることがわかっているフラグの一覧については、項2.2.8. 「MySQL AB がコンパイルした MySQL バイナリ」 を参照。
以下のようなエラーメッセージが出力された場合は、gcc コンパイラをアップグレードする必要がある。
client/libmysql.c:273: parse error before `__attribute__'
gcc 2.8.1 は正しく機能することが知られているが、当社では gcc 2.95.X の使用をお勧めする。
mysqld のコンパイル時に以下に示すようなエラーが発生した場合は、configure が accept()、getsockname()、または getpeername() の最後の引数の型を正しく検出していない。
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
type of the pointer value ''length'' is ''unsigned long'', which
is not compatible with ''int''.
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
これを修正するには、config.h ファイルを編集する(このファイルは configure によって生成される)。以下の行を検索する。
/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX
使用しているオペレーティングシステムに応じて、XXX を size_t または int に変更する(注意: configure は config.h を生成するので、configure を実行するたびにこの処理を行う必要がある)。
sql_yacc.cc ファイルは、sql_yacc.yy から生成される。MySQL には生成済みのコピーが付属しているので、通常はビルドプロセスが sql_yacc.cc を作成する必要はない。ただし、このファイルを再作成する必要がある場合は、以下のエラーが出力される。
"sql_yacc.yy", line xxx fatal: default action causes potential...
このエラーは、使用している yacc のバージョンでは不十分であることを示している。 ほとんどの場合、bison (GNU バージョンの yacc)をインストールして、現在の yacc の代わりに使用する必要がある。
mysqld または MySQL クライアントをデバッグする必要がある場合は、--with-debug オプションを指定して configure を実行する。次に、再コンパイルして、クライアントを新しいクライアントライブラリにリンクする。 See 項E.2. 「MySQL クライアントのデバッグ」。
Linux (SuSE Linux 8.1 や Red Hat Linux 7.3 など)で、以下のようなコンパイルエラーが出力された場合
libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type
libmysql.c:1329: too few arguments to function `gethostbyname_r'
libmysql.c:1329: warning: assignment makes pointer from integer without a cast
make[2]: *** [libmysql.lo] Error 1
configure スクリプトは、デフォルトで GNU C++ コンパイラである g++ を使用して引数の正しい数を判別しようとする。しかし、g++ がインストールされていないと、このテストで正しくない結果が返される。この問題に対処するには、以下の 2 つの方法がある。
GNU C++ g++ がインストールされていることを確認する。必要なパッケージの名前は、Linux ディストリビューションの種類に応じて gpp または gcc-c++ である。
CXX 環境変数を gcc に設定して、C++ コンパイラとして gcc を使用する。
export CXX="gcc"
注意: 後で configure を再実行する必要があります。
多くの問題は、解決に再 configure が必要です。再 configure が必要な場合は、以下の点に留意してください。
configure を 1 度実行した後にもう 1 度実行すると、前回の起動時に収集した情報を使用することがある。この情報は、config.cache に格納されている。configure は、起動時にこのファイルを探し、ファイルが存在する場合は、その情報が現在も適切であるものと想定してファイルの内容を読み取る。再 configure する場合は、この想定は無効である。
configure を実行するたびに make を実行して再コンパイルする必要がある。ただし、以前のビルドの古いオブジェクトファイルは別の設定オプションを使用してコンパイルされているので、最初にそれらのオブジェクトファイルを削除する必要がある。
古い検出情報やオブジェクトファイルが使用されるのを防ぐために、configure を再実行する前に以下のコマンドを実行します。
shell> rm config.cache
shell> make clean
または、make distclean を実行します。
以下の一覧で、MySQL のコンパイル時によく発生することがわかっているいくつかの問題を説明します。
sql_yacc.cc のコンパイル時にここに示されているようなエラーが発生した場合は、メモリまたはスワップ領域が不足している可能性がある。
Internal compiler error: program cc1plus got fatal signal 11
か
Out of virtual memory
か
Virtual memory exhausted
ここで問題なのは、gcc がインライン関数を備えた sql_yacc.cc をコンパイルするために大量のメモリを必要とすることである。--with-low-memory オプションを指定して configure を実行する。
shell> ./configure --with-low-memory
このオプションによって、gcc を使用している場合は -fno-inline、それ以外のコンパイラを使用している場合は -O0 がコンパイル行に追加される。メモリとスワップ領域が十分にあり、不足することはないと思われる場合でも、--with-low-memory オプションを試してみる。この問題は、メモリの豊富なハードウェア構成のシステム上でも発生することがわかっており、通常は --with-low-memory オプションを指定することで修正される。
デフォルトでは、configure はコンパイラ名として c++ を選び、GNU c++ は -lg++ をリンクする。gcc を使用している場合は、その動作によってコンフィギャ時に以下のような問題が発生することがある。
configure: error: installation or configuration problem:
C++ compiler cannot create executables.
g++、libg++、または libstdc++ に関連したコンパイル時の問題が発生することもある。
これらの問題の原因の 1 つは、g++ がないか、g++ があっても libg++ または libstdc++ がないことである。config.log ファイルを調べると、このファイルに、C++ コンパイラが機能しない正確な理由が記述されているはずである。これらの問題に対処するために、C++ コンパイラとして gcc を使用することができる。環境変数 CXX を "gcc -O3" にする。たとえば、以下のように指定する。
shell> CXX="gcc -O3" ./configure
gcc は、g++ と同様に C++ ソースをコンパイルするが、デフォルトでは libg++ または libstdc++ にはリンクしない。
当然ながら、これらの問題を修正するもう 1 つの方法は、g++、libg++、および libstdc++ をインストールすることである。しかし、libg++ または libstdc++ を MySQL と共に使用することはお勧めしない。mysqld のバイナリサイズを増やすだけで何の利点もないためである。 これらのライブラリのバージョンの中には、MySQL ユーザにとって未知の問題を過去に引き起こしたものもある。
GNU gcc バージョン 3 以降を使用しており、RAID 機能(RAID テーブル型の詳細については 項6.5.3. 「CREATE TABLE 構文」 を参照)を組み込んだ MySQL をコンパイルする場合も、C++ コンパイラとして gcc を使用する必要がある。--with-raid オプションを使用してコンパイルするように MySQL をコンフィギャしているときに、リンク段階で以下のいずれかのようなエラーが発生した場合は、前述の環境変数 CXX を定義して C++ コンパイラとして gcc を使用してみる。
gcc -O3 -DDBUG_OFF -rdynamic -o isamchk isamchk.o sort.o libnisam.a
../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a -lpthread
-lz -lcrypt -lnsl -lm -lpthread
../mysys/libmysys.a(raid.o)(.text+0x79): In function `my_raid_create':
: undefined reference to `operator new(unsigned)'
../mysys/libmysys.a(raid.o)(.text+0xdd): In function `my_raid_create':
: undefined reference to `operator delete(void*)'
../mysys/libmysys.a(raid.o)(.text+0x129): In function `my_raid_open':
: undefined reference to `operator new(unsigned)'
../mysys/libmysys.a(raid.o)(.text+0x189): In function `my_raid_open':
: undefined reference to `operator delete(void*)'
../mysys/libmysys.a(raid.o)(.text+0x64b): In function `my_raid_close':
: undefined reference to `operator delete(void*)'
collect2: ld returned 1 exit status
以下のいずれかのようなエラーでコンパイルが失敗した場合は、make のバージョンを GNU make にアップグレードする必要がある。
making all in mit-pthreads
make: Fatal error in reader: Makefile, line 18:
Badly formed macro assignment
か
make: file `Makefile' line 18: Must be a separator (:
か
pthread.h: No such file or directory
Solaris と FreeBSD は、複雑な make プログラムが組み込まれていることで知られている。
GNU make バージョン 3.75 は、正常に機能することが知られている。
C コンパイラまたはC++ コンパイラが使用するフラグを定義する場合は、CFLAGS および CXXFLAGS という環境変数にそれらのフラグを追加して定義する。同様に、CC および CXX を使用してコンパイラ名を指定することもできる。以下に例を示す。
shell> CC=gcc
shell> CFLAGS=-O3
shell> CXX=gcc
shell> CXXFLAGS=-O3
shell> export CC CFLAGS CXX CXXFLAGS
さまざまなシステムで有用であることがわかっているフラグの一覧については、項2.2.8. 「MySQL AB がコンパイルした MySQL バイナリ」 を参照。
以下のようなエラーメッセージが出力された場合は、gcc コンパイラをアップグレードする必要がある。
client/libmysql.c:273: parse error before `__attribute__'
gcc 2.8.1 は正しく機能することが知られているが、当社では gcc 2.95.X の使用をお勧めする。
mysqld のコンパイル時に以下に示すようなエラーが発生した場合は、configure が accept()、getsockname()、または getpeername() の最後の引数の型を正しく検出していない。
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
type of the pointer value ''length'' is ''unsigned long'', which
is not compatible with ''int''.
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
これを修正するには、config.h ファイルを編集する(このファイルは configure によって生成される)。以下の行を検索する。
/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX
使用しているオペレーティングシステムに応じて、XXX を size_t または int に変更する(注意: configure は config.h を生成するので、configure を実行するたびにこの処理を行う必要がある)。
sql_yacc.cc ファイルは、sql_yacc.yy から生成される。MySQL には生成済みのコピーが付属しているので、通常はビルドプロセスが sql_yacc.cc を作成する必要はない。ただし、このファイルを再作成する必要がある場合は、以下のエラーが出力される。
"sql_yacc.yy", line xxx fatal: default action causes potential...
このエラーは、使用している yacc のバージョンでは不十分であることを示している。 ほとんどの場合、bison (GNU バージョンの yacc)をインストールして、現在の yacc の代わりに使用する必要がある。
mysqld または MySQL クライアントをデバッグする必要がある場合は、--with-debug オプションを指定して configure を実行する。次に、再コンパイルして、クライアントを新しいクライアントライブラリにリンクする。 See 項E.2. 「MySQL クライアントのデバッグ」。
Linux (SuSE Linux 8.1 や Red Hat Linux 7.3 など)で、以下のようなコンパイルエラーが出力された場合
libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type
libmysql.c:1329: too few arguments to function `gethostbyname_r'
libmysql.c:1329: warning: assignment makes pointer from integer without a cast
make[2]: *** [libmysql.lo] Error 1
configure スクリプトは、デフォルトで GNU C++ コンパイラである g++ を使用して引数の正しい数を判別しようとする。しかし、g++ がインストールされていないと、このテストで正しくない結果が返される。この問題に対処するには、以下の 2 つの方法がある。
GNU C++ g++ がインストールされていることを確認する。必要なパッケージの名前は、Linux ディストリビューションの種類に応じて gpp または gcc-c++ である。
CXX 環境変数を gcc に設定して、C++ コンパイラとして gcc を使用する。
export CXX="gcc"
注意: 後で configure を再実行する必要があります。
1月10日木曜日: 2.3.4. 開発ソースツリーからのインストール
注意:このセクションは、当社の新しいコードのテストに協力することに関心のある場合にのみお読みください。MySQL をビルドしてシステム上で稼動させるだけの場合は、標準のリリースディストリビューション(ソースディストリビューションまたはバイナリディストリビューション)を使用してください。
最新の開発ソースツリーを入手するには、以下の説明に従ってください。
http://www.bitmover.com/cgi-bin/download.cgi から BitKeeper をダウンロードする。当社のリポジトリにアクセスするには、Bitkeeper 3.0 以降が必要である。
指示に従って、ダウンロードした BitKeeper をインストールする。
BitKeeper をインストールしたら、まず、作業するディレクトリに移動する。次に、以下のいずれかのコマンドを使用して、必要な MySQL バージョンブランチをコピーする。
3.23(旧バージョン)ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23
4.0(安定版/製品版)ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
4.1 alpha ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
5.0 開発ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0
上記の例では、カレントディレクトリの、mysql-3.23/、mysql-4.0/、mysql-4.1/、mysql-5.0/ のいずれかのサブディレクトリにソースツリーがセットアップされる。
ファイアウォールの背後にいて、HTTP 接続しか開始できない場合は、HTTP を通じて BitKeeper を使用することもできる。
プロキシサーバを使用する必要がある場合は、使用するプロキシを指すように環境変数 http_proxy を設定する
shell> export http_proxy="http://your.proxy.server:8080/"
次に、コピーを実行するときに、bk:// を http:// に置き換える。たとえば、以下のように指定する。
shell> bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1
接続の速度によって、ソースツリーの初期ダウンロードには多少時間がかかることがある。
次の一連のコマンドを実行するには、GNU make、autoconf 2.53 (以降)、automake 1.5、libtool 1.4、および m4 が必要である。多くのオペレーティングシステムには独自の make 実装が搭載されているが、未知のエラーメッセージが出力されてコンパイルが失敗する可能性が高い。したがって、必ず GNU make (gmake と呼ばれることもある)を使用する。
幸い、多くのオペレーティングシステムは GNU ツールチェーンがプリインストールされているか、インストール可能な GNU ツールのパッケージを提供する。いずれの場合も、以下の場所からダウンロードすることもできる。
http://www.gnu.org/software/autoconf/
http://www.gnu.org/software/automake/
http://www.gnu.org/software/libtool/
http://www.gnu.org/software/make/
MySQL 4.1 をコンフィギャする場合は、GNU bison 1.75 も必要である。旧バージョンの bison は、次のようなエラーを報告することがある。 sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded。 注意: 実際に最大テーブルサイズを超過しているわけではない。このエラーは、旧バージョンの bison のバグが原因で発生する。
バージョン 4.1 より前の MySQL バージョンは、他の yacc 実装(BSD yacc 91.7.30 など)によってもコンパイルする。4.1 以降のバージョンの場合は、GNU bison は必要条件である。
シェルで実行する標準的なコマンドは以下のとおりである。
cd mysql-4.0
bk -r edit
aclocal; autoheader; autoconf; automake
(cd innobase; aclocal; autoheader; autoconf; automake) # for InnoDB
(cd bdb/dist; sh s_all ) # for Berkeley DB
./configure # Add your favorite options here
make
この段階で未知のエラーが発生した場合は、libtool が実際にインストールされているかどうかをチェックする。
当社の標準 configure スクリプトのコレクションは、BUILD/ サブディレクトリにある。手間を省きたい場合は、BUILD/compile-pentium-debug を使用することもできる。別のアーキーテクチャ上でコンパイルするには、このスクリプトから Pentium 固有のフラグを削除して修正する。
ビルドが完了したら、make install を実行する。実稼動マシン上でこれを行う場合は、このコマンドによって稼動中のリリースインストールが上書きされるという点に注意する。別の MySQL がインストールされている場合は、prefix、with-tcp-port、unix-socket-path の各オプションに実稼動サーバで使用している値と異なる値を設定して、./configure を実行することをお勧めする。
新しいインストールを酷使して、新しい機能をクラッシュさせてみる。make test の実行から始める。 See 項13.1.2. 「MySQL テストスイート」。
make の段階に到達しても、ディストリビューションがコンパイルできない場合は、http://bugs.mysql.com/ にあるバグデータベースに報告をお願いしたい。必要な GNU ツールの最新バージョンがインストールされていて、それらのツールが設定ファイルの処理中にクラッシュする場合も同様である。 ただし、aclocal を実行して command not found というエラーや類似の問題が発生した場合は、報告は不要である。代わりに、必要なツールがすべてインストールされているかどうかと、シェルがそれらのツールを検出できるように PATH 変数が正しく設定されているかどうかを確認する。
ソースツリーを取得するための最初の bk clone 操作の後、定期的に bk pull を実行して更新を入手する。
bk sccstool を使用して、ツリーの変更履歴ですべての diff を調べることができる。不明な diff やコードがあった場合は、MySQL の内部メーリングリストにメールをお送りいただきたい。 See 項1.7.1.1. 「MySQL メーリングリスト」。 また、何かに関する修正案がある場合も、同じアドレスにパッチを添付したメールをお送りいただきたい。 bk diffs は、ユーザがソースを変更するとパッチを作成してくれる。アイデアをコードにする時間がない場合は、説明だけでもお送りいただきたい。
BitKeeper には、bk helptool を使用してアクセスできる便利なヘルプユーティリティがある。
注意: いずれのコミット(bk ci または bk citool)も、当社の内部メーリングリストへのチェンジセットを含んだメッセージの投稿や、ChangeSet コメントだけが含まれた通常の openlogging.org サブミッションをトリガすることはない。 一般に、コミットを使用する必要はない(公開ツリーは bk push を許可しないため)が、前述した bk diffs メソッドは使用する。
ChangeSet、コメント、ソースコードは、たとえば MySQL 4.1 の場合は http://mysql.bkbits.net:8080/mysql-4.1 で検索することもできます。
マニュアルは、独立したツリーに格納されています。このツリーは、以下のコマンドを使用してコピーすることができます。
shell> bk clone bk://mysql.bkbits.net/mysqldoc mysqldoc
MySQL Control Center と Connector/ODBC の公開 BitKeeper ツリーもあります。これらのツリーは、それぞれ以下のコマンドでコピーできます。
MySQL Control Center をコピーするには、以下のコマンドを使用してください。
shell> bk clone http://mysql.bkbits.net/mysqlcc mysqlcc
Connector/ODBC をコピーするには、以下のコマンドを使用してください。
shell> bk clone http://mysql.bkbits.net/myodbc3 myodbc3
最新の開発ソースツリーを入手するには、以下の説明に従ってください。
http://www.bitmover.com/cgi-bin/download.cgi から BitKeeper をダウンロードする。当社のリポジトリにアクセスするには、Bitkeeper 3.0 以降が必要である。
指示に従って、ダウンロードした BitKeeper をインストールする。
BitKeeper をインストールしたら、まず、作業するディレクトリに移動する。次に、以下のいずれかのコマンドを使用して、必要な MySQL バージョンブランチをコピーする。
3.23(旧バージョン)ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23
4.0(安定版/製品版)ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
4.1 alpha ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
5.0 開発ブランチをコピーするには、以下のコマンドを使用する。
shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0
上記の例では、カレントディレクトリの、mysql-3.23/、mysql-4.0/、mysql-4.1/、mysql-5.0/ のいずれかのサブディレクトリにソースツリーがセットアップされる。
ファイアウォールの背後にいて、HTTP 接続しか開始できない場合は、HTTP を通じて BitKeeper を使用することもできる。
プロキシサーバを使用する必要がある場合は、使用するプロキシを指すように環境変数 http_proxy を設定する
shell> export http_proxy="http://your.proxy.server:8080/"
次に、コピーを実行するときに、bk:// を http:// に置き換える。たとえば、以下のように指定する。
shell> bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1
接続の速度によって、ソースツリーの初期ダウンロードには多少時間がかかることがある。
次の一連のコマンドを実行するには、GNU make、autoconf 2.53 (以降)、automake 1.5、libtool 1.4、および m4 が必要である。多くのオペレーティングシステムには独自の make 実装が搭載されているが、未知のエラーメッセージが出力されてコンパイルが失敗する可能性が高い。したがって、必ず GNU make (gmake と呼ばれることもある)を使用する。
幸い、多くのオペレーティングシステムは GNU ツールチェーンがプリインストールされているか、インストール可能な GNU ツールのパッケージを提供する。いずれの場合も、以下の場所からダウンロードすることもできる。
http://www.gnu.org/software/autoconf/
http://www.gnu.org/software/automake/
http://www.gnu.org/software/libtool/
http://www.gnu.org/software/make/
MySQL 4.1 をコンフィギャする場合は、GNU bison 1.75 も必要である。旧バージョンの bison は、次のようなエラーを報告することがある。 sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded。 注意: 実際に最大テーブルサイズを超過しているわけではない。このエラーは、旧バージョンの bison のバグが原因で発生する。
バージョン 4.1 より前の MySQL バージョンは、他の yacc 実装(BSD yacc 91.7.30 など)によってもコンパイルする。4.1 以降のバージョンの場合は、GNU bison は必要条件である。
シェルで実行する標準的なコマンドは以下のとおりである。
cd mysql-4.0
bk -r edit
aclocal; autoheader; autoconf; automake
(cd innobase; aclocal; autoheader; autoconf; automake) # for InnoDB
(cd bdb/dist; sh s_all ) # for Berkeley DB
./configure # Add your favorite options here
make
この段階で未知のエラーが発生した場合は、libtool が実際にインストールされているかどうかをチェックする。
当社の標準 configure スクリプトのコレクションは、BUILD/ サブディレクトリにある。手間を省きたい場合は、BUILD/compile-pentium-debug を使用することもできる。別のアーキーテクチャ上でコンパイルするには、このスクリプトから Pentium 固有のフラグを削除して修正する。
ビルドが完了したら、make install を実行する。実稼動マシン上でこれを行う場合は、このコマンドによって稼動中のリリースインストールが上書きされるという点に注意する。別の MySQL がインストールされている場合は、prefix、with-tcp-port、unix-socket-path の各オプションに実稼動サーバで使用している値と異なる値を設定して、./configure を実行することをお勧めする。
新しいインストールを酷使して、新しい機能をクラッシュさせてみる。make test の実行から始める。 See 項13.1.2. 「MySQL テストスイート」。
make の段階に到達しても、ディストリビューションがコンパイルできない場合は、http://bugs.mysql.com/ にあるバグデータベースに報告をお願いしたい。必要な GNU ツールの最新バージョンがインストールされていて、それらのツールが設定ファイルの処理中にクラッシュする場合も同様である。 ただし、aclocal を実行して command not found というエラーや類似の問題が発生した場合は、報告は不要である。代わりに、必要なツールがすべてインストールされているかどうかと、シェルがそれらのツールを検出できるように PATH 変数が正しく設定されているかどうかを確認する。
ソースツリーを取得するための最初の bk clone 操作の後、定期的に bk pull を実行して更新を入手する。
bk sccstool を使用して、ツリーの変更履歴ですべての diff を調べることができる。不明な diff やコードがあった場合は、MySQL の内部メーリングリストにメールをお送りいただきたい。 See 項1.7.1.1. 「MySQL メーリングリスト」。 また、何かに関する修正案がある場合も、同じアドレスにパッチを添付したメールをお送りいただきたい。 bk diffs は、ユーザがソースを変更するとパッチを作成してくれる。アイデアをコードにする時間がない場合は、説明だけでもお送りいただきたい。
BitKeeper には、bk helptool を使用してアクセスできる便利なヘルプユーティリティがある。
注意: いずれのコミット(bk ci または bk citool)も、当社の内部メーリングリストへのチェンジセットを含んだメッセージの投稿や、ChangeSet コメントだけが含まれた通常の openlogging.org サブミッションをトリガすることはない。 一般に、コミットを使用する必要はない(公開ツリーは bk push を許可しないため)が、前述した bk diffs メソッドは使用する。
ChangeSet、コメント、ソースコードは、たとえば MySQL 4.1 の場合は http://mysql.bkbits.net:8080/mysql-4.1 で検索することもできます。
マニュアルは、独立したツリーに格納されています。このツリーは、以下のコマンドを使用してコピーすることができます。
shell> bk clone bk://mysql.bkbits.net/mysqldoc mysqldoc
MySQL Control Center と Connector/ODBC の公開 BitKeeper ツリーもあります。これらのツリーは、それぞれ以下のコマンドでコピーできます。
MySQL Control Center をコピーするには、以下のコマンドを使用してください。
shell> bk clone http://mysql.bkbits.net/mysqlcc mysqlcc
Connector/ODBC をコピーするには、以下のコマンドを使用してください。
shell> bk clone http://mysql.bkbits.net/myodbc3 myodbc3
1月 9日水曜日: 2.3.3. 一般的な configure オプション
configure スクリプトを使用すると、MySQL ディストリビューションの設定を自由に調整できます。設定方法の調整は、通常は configure コマンドラインでオプションを使用して行います。また、環境変数を使用して configure を調整することもできます。See 付録 F. 環境変数。 configure がサポートするオプションの一覧が必要な場合は、以下のコマンドを実行します。
shell> ./configure --help
ここでは、広く使用されている configure オプションの一部を説明します。
MySQL のクライアントライブラリとクライアントプログラムだけをコンパイルして、サーバをコンパイルしない場合は、以下のように --without-server オプションを使用する。
shell> ./configure --without-server
C++ コンパイラがない場合は、mysql はコンパイルを実行しない(mysql は C++ を必要とする唯一のクライアントプログラム)。その場合は、configure の、C++ コンパイラをテストするコードを削除し、--without-server オプションを指定して ./configure を実行する。compile ステップは依然として mysql のビルドを試行するが、mysql.cc に関する警告は無視してもかまわない(make が停止したら、make -k を実行して、エラーが発生しても残りのビルドを続行するよう指示する)。
組み込みの MySQL サーバライブラリ(libmysqld.a)が必要な場合は、--with-embedded-server オプションを使用する。
ログファイルとデータベースディレクトリを /usr/local/var の下に配置しない場合は、以下のいずれかと類似した configure コマンドを使用する。
shell> ./configure --prefix=/usr/local/mysql
shell> ./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
最初のコマンドでは、デフォルトの /usr/local ではなく /usr/local/mysql にすべてのものがインストールされるようにインストールプリフィックスが変更される。2 番目のコマンドでは、デフォルトのインストールプリフィックスは維持されるが、データベースディレクトリのデフォルトの場所(通常は /usr/local/var)が無効にされ、/usr/local/mysql/data に変更される。これらのオプションは、MySQL をコンパイルした後に、オプション設定ファイルで変更できる。 See 項4.1.2. 「my.cnf オプション設定ファイル」。
Unix を使用しており、MySQL ソケットファイルをデフォルトの場所(通常は、/tmp または /var/run)以外の場所に配置する場合は、以下のような configure コマンドを使用する。
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
注意: 指定するファイルは絶対パス名でなければならない。 また、後で MySQL オプション設定ファイルを使用して、場所 mysql.sock を変更することもできる。 See 項A.4.5. 「MySQL ソケットファイル /tmp/mysql.sock の保護または変更方法」。
静的にリンクされたプログラムをコンパイルする場合(バイナリディストリビューションの作成、高速化、一部の Red Hat Linux ディストリビューションの問題の回避などのために)、以下のような configure コマンドを実行します。
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
gcc を使用しており、libg++ または libstdc++ がインストールされていない場合、C++ コンパイラとして gcc を使用するように configure を設定することができる。
shell> CC=gcc CXX=gcc ./configure
C++ コンパイラとして gcc を使用すると、libg++ または libstdc++ へのリンクは試行されない。上記のライブラリがインストールされている場合でも、これらのライブラリの一部のバージョンは過去に MySQL ユーザにとって未知の問題を引き起こしたことがあるので、このように処理することをお勧めする。
以下に、使用しているコンパイラに応じて設定する一般的な環境変数をいくつか示す。
コンパイラ 推奨オプション
gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
pgcc 2.90.29 以降 CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
ほとんどの場合、上記の表に記載されているオプションを使用して、configure 行に以下のオプションを追加して、MySQL バイナリを適度に最適化することができる。
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
つまり、最新のすべての gcc バージョン向けの完全な configure 行は、以下のようなものになる。
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
-felide-constructors -fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
当社が MySQL Web サイト(http://www.mysql.com/)で提供するバイナリはすべて、完全に最適化されてコンパイルされており、ほとんどのユーザにとって最適である。See 項2.2.8. 「MySQL AB がコンパイルした MySQL バイナリ」。 さらに高速なバイナリを作成するためにユーザが微調整できる設定がいくつかあるが、これは上級ユーザ向けである。 See 項5.5.3. 「MySQL の速度に対するコンパイルとリンクの影響」。
ビルドが失敗し、コンパイラまたはリンカが共有ライブラリ libmysqlclient.so.#(‘#’ はバージョン番号です)を作成できないというエラーが生成された場合は、configure に --disable-shared オプションを指定してこの問題に対処できる。この場合、configure は共有ライブラリ libmysqlclient.so.# をビルドしない。
非 NULL 属性のカラム(つまり、NULL にすることが許されないカラム)に DEFAULT の値を使用しないように MySQL をコンフィギャすることができる。 See 項1.8.5.2. 「NOT NULL および DEFAULT 値制約」。
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
MySQL は、デフォルトで ISO-8859-1 (Latin1) キャラクタセットを使用する。デフォルトのキャラクタセットを変更するには、以下のように --with-charset オプションを使用する。
shell> ./configure --with-charset=CHARSET
CHARSET は、big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7、または win1251ukr のいずれかである。 See 項4.7.1. 「データおよびソート用キャラクタセット」。
サーバとクライアントの間で文字を変換する場合は、SET CHARACTER SET コマンドに注目する。 See 項5.5.6. 「SET 構文」。
警告: テーブルを作成した後にキャラクタセットを変更する場合は、すべてのテーブルで myisamchk -r -q --set-character-set=charset を実行する必要がある。これを行わないと、インデックスが正しくソートされないことがある(MySQL をインストールし、いくつかのテーブルを作成し、別のキャラクタセットを使用するように MySQL をコンフィギャし直して、その MySQL を再インストールした場合に、この問題が起きる可能性がある)。
--with-extra-charsets=LIST オプションを使用して、サーバにコンパイルする追加のキャラクタセットを定義できる。
この場合、LIST は、カンマで区切ったキャラクタセットのリスト、動的にロードできないすべての文字を含めるための complex、またはすべてのキャラクタセットをバイナリに含めるための all のいずれかである。
コードをデバッグするように MySQL をコンフィギャするには、--with-debug オプションを使用する。
shell> ./configure --with-debug
これによって、エラーを検出し、エラーの内容に関する出力を提供する安全なメモリアロケータが組み込まれる。 See 項E.1. 「MySQL サーバのデバッグ」。
クライアントプログラムがスレッドを使用する場合、--enable-thread-safe-client configure オプションを使用して、MySQL クライアントライブラリのスレッドセーフバージョンをコンパイルする必要もある。これによって、スレッドアプリケーションとリンクさせる libmysqlclient_r ライブラリが作成される。 See 項11.1.14. 「スレッドクライアントの作成方法」。
特定のシステムに関係するオプションについては、このマニュアルのシステム固有のセクションを参照。 See 項2.6. 「オペレーティングシステム固有の注意事項」。
shell> ./configure --help
ここでは、広く使用されている configure オプションの一部を説明します。
MySQL のクライアントライブラリとクライアントプログラムだけをコンパイルして、サーバをコンパイルしない場合は、以下のように --without-server オプションを使用する。
shell> ./configure --without-server
C++ コンパイラがない場合は、mysql はコンパイルを実行しない(mysql は C++ を必要とする唯一のクライアントプログラム)。その場合は、configure の、C++ コンパイラをテストするコードを削除し、--without-server オプションを指定して ./configure を実行する。compile ステップは依然として mysql のビルドを試行するが、mysql.cc に関する警告は無視してもかまわない(make が停止したら、make -k を実行して、エラーが発生しても残りのビルドを続行するよう指示する)。
組み込みの MySQL サーバライブラリ(libmysqld.a)が必要な場合は、--with-embedded-server オプションを使用する。
ログファイルとデータベースディレクトリを /usr/local/var の下に配置しない場合は、以下のいずれかと類似した configure コマンドを使用する。
shell> ./configure --prefix=/usr/local/mysql
shell> ./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
最初のコマンドでは、デフォルトの /usr/local ではなく /usr/local/mysql にすべてのものがインストールされるようにインストールプリフィックスが変更される。2 番目のコマンドでは、デフォルトのインストールプリフィックスは維持されるが、データベースディレクトリのデフォルトの場所(通常は /usr/local/var)が無効にされ、/usr/local/mysql/data に変更される。これらのオプションは、MySQL をコンパイルした後に、オプション設定ファイルで変更できる。 See 項4.1.2. 「my.cnf オプション設定ファイル」。
Unix を使用しており、MySQL ソケットファイルをデフォルトの場所(通常は、/tmp または /var/run)以外の場所に配置する場合は、以下のような configure コマンドを使用する。
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
注意: 指定するファイルは絶対パス名でなければならない。 また、後で MySQL オプション設定ファイルを使用して、場所 mysql.sock を変更することもできる。 See 項A.4.5. 「MySQL ソケットファイル /tmp/mysql.sock の保護または変更方法」。
静的にリンクされたプログラムをコンパイルする場合(バイナリディストリビューションの作成、高速化、一部の Red Hat Linux ディストリビューションの問題の回避などのために)、以下のような configure コマンドを実行します。
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
gcc を使用しており、libg++ または libstdc++ がインストールされていない場合、C++ コンパイラとして gcc を使用するように configure を設定することができる。
shell> CC=gcc CXX=gcc ./configure
C++ コンパイラとして gcc を使用すると、libg++ または libstdc++ へのリンクは試行されない。上記のライブラリがインストールされている場合でも、これらのライブラリの一部のバージョンは過去に MySQL ユーザにとって未知の問題を引き起こしたことがあるので、このように処理することをお勧めする。
以下に、使用しているコンパイラに応じて設定する一般的な環境変数をいくつか示す。
コンパイラ 推奨オプション
gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
pgcc 2.90.29 以降 CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
ほとんどの場合、上記の表に記載されているオプションを使用して、configure 行に以下のオプションを追加して、MySQL バイナリを適度に最適化することができる。
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
つまり、最新のすべての gcc バージョン向けの完全な configure 行は、以下のようなものになる。
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
-felide-constructors -fno-exceptions -fno-rtti" ./configure \
--prefix=/usr/local/mysql --enable-assembler \
--with-mysqld-ldflags=-all-static
当社が MySQL Web サイト(http://www.mysql.com/)で提供するバイナリはすべて、完全に最適化されてコンパイルされており、ほとんどのユーザにとって最適である。See 項2.2.8. 「MySQL AB がコンパイルした MySQL バイナリ」。 さらに高速なバイナリを作成するためにユーザが微調整できる設定がいくつかあるが、これは上級ユーザ向けである。 See 項5.5.3. 「MySQL の速度に対するコンパイルとリンクの影響」。
ビルドが失敗し、コンパイラまたはリンカが共有ライブラリ libmysqlclient.so.#(‘#’ はバージョン番号です)を作成できないというエラーが生成された場合は、configure に --disable-shared オプションを指定してこの問題に対処できる。この場合、configure は共有ライブラリ libmysqlclient.so.# をビルドしない。
非 NULL 属性のカラム(つまり、NULL にすることが許されないカラム)に DEFAULT の値を使用しないように MySQL をコンフィギャすることができる。 See 項1.8.5.2. 「NOT NULL および DEFAULT 値制約」。
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
MySQL は、デフォルトで ISO-8859-1 (Latin1) キャラクタセットを使用する。デフォルトのキャラクタセットを変更するには、以下のように --with-charset オプションを使用する。
shell> ./configure --with-charset=CHARSET
CHARSET は、big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7、または win1251ukr のいずれかである。 See 項4.7.1. 「データおよびソート用キャラクタセット」。
サーバとクライアントの間で文字を変換する場合は、SET CHARACTER SET コマンドに注目する。 See 項5.5.6. 「SET 構文」。
警告: テーブルを作成した後にキャラクタセットを変更する場合は、すべてのテーブルで myisamchk -r -q --set-character-set=charset を実行する必要がある。これを行わないと、インデックスが正しくソートされないことがある(MySQL をインストールし、いくつかのテーブルを作成し、別のキャラクタセットを使用するように MySQL をコンフィギャし直して、その MySQL を再インストールした場合に、この問題が起きる可能性がある)。
--with-extra-charsets=LIST オプションを使用して、サーバにコンパイルする追加のキャラクタセットを定義できる。
この場合、LIST は、カンマで区切ったキャラクタセットのリスト、動的にロードできないすべての文字を含めるための complex、またはすべてのキャラクタセットをバイナリに含めるための all のいずれかである。
コードをデバッグするように MySQL をコンフィギャするには、--with-debug オプションを使用する。
shell> ./configure --with-debug
これによって、エラーを検出し、エラーの内容に関する出力を提供する安全なメモリアロケータが組み込まれる。 See 項E.1. 「MySQL サーバのデバッグ」。
クライアントプログラムがスレッドを使用する場合、--enable-thread-safe-client configure オプションを使用して、MySQL クライアントライブラリのスレッドセーフバージョンをコンパイルする必要もある。これによって、スレッドアプリケーションとリンクさせる libmysqlclient_r ライブラリが作成される。 See 項11.1.14. 「スレッドクライアントの作成方法」。
特定のシステムに関係するオプションについては、このマニュアルのシステム固有のセクションを参照。 See 項2.6. 「オペレーティングシステム固有の注意事項」。
1月 9日水曜日: 2.3.2. パッチの適用
パッチは、メーリングリストまたは MySQL の Web サイト(http://www.mysql.com/downloads/patches.html)の「patches」エリアにときどき公開されます。
メーリングリストにあるパッチを適用するには、パッチが含まれたメッセージをファイルに保存し、MySQL ソースツリーの最上位ディレクトリに移動して以下のコマンドを実行します。
shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean
FTP サイトにあるパッチは、プレーンテキストファイルまたは gzip で圧縮されたファイルとして配布されます。プレーンテキストのパッチの適用は、メーリングリストのパッチの箇所で説明した方法で行います。圧縮されたパッチを適用するには、MySQL ソースツリーの最上位ディレクトリに移動して、以下のコマンドを実行します。
shell> gunzip < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean
パッチを適用した後に、通常のソースインストール手順に従いますが、./configure ステップから開始します。make install ステップを実行したら、MySQL サーバを再起動します。
make install を実行する前に、現在稼動しているサーバを停止させる必要があります(サーバを停止させるには mysqladmin shutdown を使用します)。一部のシステムでは、新しいバージョンのプログラムが現在実行されているバージョンを置き換える場合は、新しいバージョンのインストールが許可されないことがあります。
メーリングリストにあるパッチを適用するには、パッチが含まれたメッセージをファイルに保存し、MySQL ソースツリーの最上位ディレクトリに移動して以下のコマンドを実行します。
shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean
FTP サイトにあるパッチは、プレーンテキストファイルまたは gzip で圧縮されたファイルとして配布されます。プレーンテキストのパッチの適用は、メーリングリストのパッチの箇所で説明した方法で行います。圧縮されたパッチを適用するには、MySQL ソースツリーの最上位ディレクトリに移動して、以下のコマンドを実行します。
shell> gunzip < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean
パッチを適用した後に、通常のソースインストール手順に従いますが、./configure ステップから開始します。make install ステップを実行したら、MySQL サーバを再起動します。
make install を実行する前に、現在稼動しているサーバを停止させる必要があります(サーバを停止させるには mysqladmin shutdown を使用します)。一部のシステムでは、新しいバージョンのプログラムが現在実行されているバージョンを置き換える場合は、新しいバージョンのインストールが許可されないことがあります。
1月 8日火曜日: 2.3.1. クイックインストールの概要
MySQL ソースディストリビューションをインストールするために実行する必要のある基本的なコマンドは、以下のとおりです。
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
バージョン 4.0 より前の MySQL を使用している場合は、最後のコマンドの bin/mysqld_safe を bin/safe_mysqld に置き換えてください。
InnoDB テーブルのサポートが必要な場合は、/etc/my.cnf ファイルを編集して、innodb_... で始まるパラメータの前にある # 文字を削除してください。 See 項4.1.2. 「my.cnf オプション設定ファイル」 と 項7.5.3. 「InnoDB 起動オプション」 を参照してください。
ソース RPM から開始する場合は、以下のコマンドを実行します。
shell> rpm --rebuild --clean MySQL-VERSION.src.rpm
これによって、インストールできるバイナリ RPM が作成されます。
DBI および DBD-mysql Perl モジュールをインストールしている場合は、bin/mysql_setpermission スクリプトを使用して新しいユーザを追加できます。
以下に詳細な説明を示します。
ソースディストリビューションをインストールするには、以下のステップに従って処理を行った後、項2.4. 「インストール後の設定とテスト」 に進み、ポストインストール初期化とテストを行います。
ディストリビューションのアンパック先とするディレクトリを決め、そのディレクトリに移動する。
項2.2.1. 「MySQL の入手方法」 に記載されているいずれかのサイトからディストリビューションファイルを入手する。
MySQL で Berkeley DB テーブルを使用することを考えている場合は、Berkeley DB ソースコードのパッチ適用済みバージョンを入手する必要がある。次に進む前に、Berkeley DB テーブルに関する章を読むことをお勧めする。 See 項7.6. 「BDB または BerkeleyDB テーブル」。
MySQL ソースディストリビューションは、tar 形式の圧縮アーカイブとして提供され、mysql-VERSION.tar.gz などの名前が付いている。この場合、VERSION は、5.0.6-beta などのバージョン番号である。
mysqld の実行時に使用するユーザとグループを追加する。
shell> groupadd mysql
shell> useradd -g mysql mysql
上記のコマンドで、mysql グループと mysql ユーザが追加される。useradd と groupadd の構文は、Unix のバージョンの種類によって少し異なる。これらのコマンドは、それぞれ、adduser および addgroup と呼ばれることもある。 ユーザとグループを mysql 以外の名前にしてもかまわない。
ディストリビューションをカレントディレクトリにアンパックする。
shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
このコマンドによって、mysql-VERSION という名前のディレクトリが作成される。
アンパックしたディストリビューションの最上位ディレクトリに移動する。
shell> cd mysql-VERSION
注意: 現時点では、最上位ディレクトリから MySQL をコンフィギャしてビルドする。他のディレクトリで MySQL をビルドすることはできない。
コンフィギャして、コンパイルする。
shell> ./configure --prefix=/usr/local/mysql
shell> make
configure を実行するときに、いくつかのオプションを指定することができる。 オプションの一覧が必要な場合は、./configure --help を実行する。 項2.3.3. 「一般的な configure オプション」 では、さらに便利ないくつかのオプションについて説明する。
configure が失敗し、MySQL メーリングリストにメールを送信して支援を求める場合は、config.log の中の、問題の解決に役立つと思われる行をメールに含める。configure が中断した場合は、configure からの出力の最後の 2、3 行も含める。mysqlbug スクリプトを使用して、バグレポートを投稿する。 See 項1.7.1.3. 「バグまたは問題を報告する方法」。
コンパイルが失敗した場合は、項2.3.5. 「MySQL のコンパイルに関する問題への対処」 で、数多くの一般的な問題に関するヘルプを参照。
以下のコマンドで、すべてのものをインストールする。
shell> make install
このコマンドは、root として実行する必要がある場合がある。
以下のコマンドで、MySQL 権限テーブルを作成します(初めて MySQL をインストールする場合にのみ必要)。
shell> scripts/mysql_install_db
注意: バージョン 3.22.10 より前の MySQL バージョンでは、mysql_install_db を実行すると MySQL サーバが起動されていた。現バージョンでは、MySQL サーバは起動されない。
バイナリの所有者を root に変更し、データディレクトリの所有者を mysqld の実行時に使用するユーザに変更する。
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
最初のコマンドでファイルの owner 属性が root ユーザに変更され、2 番目のコマンドでデータディレクトリの owner 属性が mysql ユーザに変更される。3 番目のコマンドで、group 属性が mysql グループに変更される。
Perl の DBI/DBD インタフェースのサポートをインストールする場合は、項2.7. 「Perl インストールについてのコメント」 を参照。
マシンのブート時に MySQL を自動的に起動させる場合は、使用しているシステムの起動ファイルが格納されている場所に support-files/mysql.server をコピーする。詳細については、support-files/mysql.server スクリプト自体と 項2.4.3. 「MySQL を自動的に起動および停止する」 を参照。
すべてのものをインストールしたら、以下のコマンドを使用してディストリビューションの初期化とテストを行ってください。
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
バージョン 4.0 より前の MySQL を使用している場合は、このコマンドの mysqld_safe を safe_mysqld に置き換えてください。
そのコマンドが、mysqld daemon ended というエラーですぐに失敗した場合は、ファイル mysql-data-directory/'hostname'.err に何らかの情報が記述されています。 原因としては、すでに別の mysqld サーバを実行していることが考えられます。 See 項4.2. 「同じマシン上で複数の MySQL サーバを実行する」。
次に、項2.4. 「インストール後の設定とテスト」 に進みます。
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
バージョン 4.0 より前の MySQL を使用している場合は、最後のコマンドの bin/mysqld_safe を bin/safe_mysqld に置き換えてください。
InnoDB テーブルのサポートが必要な場合は、/etc/my.cnf ファイルを編集して、innodb_... で始まるパラメータの前にある # 文字を削除してください。 See 項4.1.2. 「my.cnf オプション設定ファイル」 と 項7.5.3. 「InnoDB 起動オプション」 を参照してください。
ソース RPM から開始する場合は、以下のコマンドを実行します。
shell> rpm --rebuild --clean MySQL-VERSION.src.rpm
これによって、インストールできるバイナリ RPM が作成されます。
DBI および DBD-mysql Perl モジュールをインストールしている場合は、bin/mysql_setpermission スクリプトを使用して新しいユーザを追加できます。
以下に詳細な説明を示します。
ソースディストリビューションをインストールするには、以下のステップに従って処理を行った後、項2.4. 「インストール後の設定とテスト」 に進み、ポストインストール初期化とテストを行います。
ディストリビューションのアンパック先とするディレクトリを決め、そのディレクトリに移動する。
項2.2.1. 「MySQL の入手方法」 に記載されているいずれかのサイトからディストリビューションファイルを入手する。
MySQL で Berkeley DB テーブルを使用することを考えている場合は、Berkeley DB ソースコードのパッチ適用済みバージョンを入手する必要がある。次に進む前に、Berkeley DB テーブルに関する章を読むことをお勧めする。 See 項7.6. 「BDB または BerkeleyDB テーブル」。
MySQL ソースディストリビューションは、tar 形式の圧縮アーカイブとして提供され、mysql-VERSION.tar.gz などの名前が付いている。この場合、VERSION は、5.0.6-beta などのバージョン番号である。
mysqld の実行時に使用するユーザとグループを追加する。
shell> groupadd mysql
shell> useradd -g mysql mysql
上記のコマンドで、mysql グループと mysql ユーザが追加される。useradd と groupadd の構文は、Unix のバージョンの種類によって少し異なる。これらのコマンドは、それぞれ、adduser および addgroup と呼ばれることもある。 ユーザとグループを mysql 以外の名前にしてもかまわない。
ディストリビューションをカレントディレクトリにアンパックする。
shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
このコマンドによって、mysql-VERSION という名前のディレクトリが作成される。
アンパックしたディストリビューションの最上位ディレクトリに移動する。
shell> cd mysql-VERSION
注意: 現時点では、最上位ディレクトリから MySQL をコンフィギャしてビルドする。他のディレクトリで MySQL をビルドすることはできない。
コンフィギャして、コンパイルする。
shell> ./configure --prefix=/usr/local/mysql
shell> make
configure を実行するときに、いくつかのオプションを指定することができる。 オプションの一覧が必要な場合は、./configure --help を実行する。 項2.3.3. 「一般的な configure オプション」 では、さらに便利ないくつかのオプションについて説明する。
configure が失敗し、MySQL メーリングリストにメールを送信して支援を求める場合は、config.log の中の、問題の解決に役立つと思われる行をメールに含める。configure が中断した場合は、configure からの出力の最後の 2、3 行も含める。mysqlbug スクリプトを使用して、バグレポートを投稿する。 See 項1.7.1.3. 「バグまたは問題を報告する方法」。
コンパイルが失敗した場合は、項2.3.5. 「MySQL のコンパイルに関する問題への対処」 で、数多くの一般的な問題に関するヘルプを参照。
以下のコマンドで、すべてのものをインストールする。
shell> make install
このコマンドは、root として実行する必要がある場合がある。
以下のコマンドで、MySQL 権限テーブルを作成します(初めて MySQL をインストールする場合にのみ必要)。
shell> scripts/mysql_install_db
注意: バージョン 3.22.10 より前の MySQL バージョンでは、mysql_install_db を実行すると MySQL サーバが起動されていた。現バージョンでは、MySQL サーバは起動されない。
バイナリの所有者を root に変更し、データディレクトリの所有者を mysqld の実行時に使用するユーザに変更する。
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
最初のコマンドでファイルの owner 属性が root ユーザに変更され、2 番目のコマンドでデータディレクトリの owner 属性が mysql ユーザに変更される。3 番目のコマンドで、group 属性が mysql グループに変更される。
Perl の DBI/DBD インタフェースのサポートをインストールする場合は、項2.7. 「Perl インストールについてのコメント」 を参照。
マシンのブート時に MySQL を自動的に起動させる場合は、使用しているシステムの起動ファイルが格納されている場所に support-files/mysql.server をコピーする。詳細については、support-files/mysql.server スクリプト自体と 項2.4.3. 「MySQL を自動的に起動および停止する」 を参照。
すべてのものをインストールしたら、以下のコマンドを使用してディストリビューションの初期化とテストを行ってください。
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
バージョン 4.0 より前の MySQL を使用している場合は、このコマンドの mysqld_safe を safe_mysqld に置き換えてください。
そのコマンドが、mysqld daemon ended というエラーですぐに失敗した場合は、ファイル mysql-data-directory/'hostname'.err に何らかの情報が記述されています。 原因としては、すでに別の mysqld サーバを実行していることが考えられます。 See 項4.2. 「同じマシン上で複数の MySQL サーバを実行する」。
次に、項2.4. 「インストール後の設定とテスト」 に進みます。