無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

第2章 MySQL のインストールと更新

目次

2.1. 一般的なインストールの問題
2.1.1. MySQL Community Server がサポートしているオペレーティング システム
2.1.2. インストールする MySQL 配布版の選択
2.1.3. MySQL の取得方法
2.1.4. MD5 チェックサムあるいは GnuPGを用いたパッケージの品質の検証
2.1.5. インストールのレイアウト
2.2. バイナリの配布を使用した標準 MySQL のインストール
2.3. Windows に MySQL をインストールする
2.3.1. インストール用パッケージの選択
2.3.2. 自動インストーラで MySQL をインストールする
2.3.3. MySQL インストール ウイザードを使用する
2.3.4. 設定ウイザードを使用する
2.3.5. 非インストール Zip アーカイブからのインストール
2.3.6. インストール アーカイブを取り出す
2.3.7. オプション ファイルの作成
2.3.8. MySQL サーバ タイプの選択
2.3.9. サーバを最初に起動する
2.3.10. MySQL の Windows のコマンドラインからの起動
2.3.11. Windows のサービスとして MySQL を起動する
2.3.12. MySQL インストールのテスト
2.3.13. Windows への MySQL インストールにおけるトラブルシューティング
2.3.14. Windows を使用した MySQL をアップグレードする
2.3.15. Windows 上の MySQL と Unix 上の MySQL の比較
2.4. Linux に MySQL をインストールする
2.5. Mac OS X に MySQL をインストールする
2.6. Solaris に MySQL をインストールする
2.7. MySQL を NetWare にインストールする
2.8. 他の Unix 系システムへの MySQL のインストール
2.9. ソースのディストリビューションを使用した MySQL のインストール
2.9.1. ソースのインストール概要
2.9.2. 典型的な configure オプション
2.9.3. 開発ソース ツリーからのインストール
2.9.4. MySQL のコンパイルに関する問題
2.9.5. MIT-pthreads ノート
2.9.6. Windows にソースから MySQL をインストールする
2.9.7. Windows で MySQL クライアントをコンパイルする
2.10. インストール後の設定とテスト
2.10.1. Windows のインストール後のプロシージャ
2.10.2. Unix のインストール後のプロシージャ
2.10.3. 最初の MySQL アカウントの確保
2.11. MySQL のアップグレード
2.11.1. MySQL 5.0 から 5.1 へのアップグレード
2.11.2. MySQL データベースの他のマシンへのコピー
2.12. MySQL のダウングレード
2.12.1. MySQL 5.0 へのダウングレード
2.13. オペレーティング システムに特化した注釈
2.13.1. Linux の注釈
2.13.2. Mac OS X に関する注釈
2.13.3. Solaris に関する注釈
2.13.4. BSD に関する注釈
2.13.5. 他の Unix に関する注釈
2.13.6. OS/2 に関する注釈
2.14. 環境変数
2.15. Perl のインストールに関する注釈
2.15.1. Unix に Perl をインストールする
2.15.2. Windows に ActiveState Perl をインストールする
2.15.3. Perl DBI/DBD インターフェースを使用した際の問題

この章では MySQL の取得とインストールについて説明します。最初の手順の概要を、後半の項で詳細を説明します。MySQL を最初にインストールするのではなく、現行の MySQL を新しいベージョンにアップグレードするには、項2.11. 「MySQL のアップグレード」 を参照してください。アップグレード前に考慮すべき問題点およびアップグレードの手順に関する情報を網羅しています。

MySQL を別のデータベース システムから移行する場合には 項A.9. 「MySQL 5.1 FAQ — Migration」 を参照してください。この資料に中にはい移行の問題に関する質問に対する解答が含まれています。

  1. MySQL の実行と現在使用中のプラットフォームのサポート。 MySQL はどのプラットフォームでも同様に動作する訳ではなく、また MySQL が動作するといわれているプラットフォームのすべてを MySQL AB がサポートしている訳でありません。

  2. どの配布版をインストールするか選択します。 MySQL にはいくつかのバージョンがあり、その殆どがいくつかのプラットフォームで動作します。バイナリ (コンパイル済み) プログラムあるいはソースコードを含むパッケージを選択できます。疑問がある場合にはバイナリの配布版が無難です。弊社ではまた弊社の最新の開発に興味があり、新しいコードのテストにご協力頂ける方にソースを公開しています。どのバージョンのどの配布版を選択したらよいかは 項2.1.2. 「インストールする MySQL 配布版の選択」 をご覧ください。

  3. インストールする配布版をダウンロードします。 インストールの説明は、項2.1.3. 「MySQL の取得方法」 をご覧ください。配布版の品質を確認するには、項2.1.4. 「MD5 チェックサムあるいは GnuPGを用いたパッケージの品質の検証」 の説明を参照してください。

  4. 配布版をインストールします。 MySQL をバイナリでインストールするには、項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 の説明書を参照してください。MySQL をソースの配布版からインストールする、あるいは現在の開発版からインストールするかは、項2.9. 「ソースのディストリビューションを使用した MySQL のインストール」 を参照してください。

    インストールで問題がありましたら、項2.13. 「オペレーティング システムに特化した注釈」 をご覧ください。特定のプラットフォームに関する問題の解決法を載せてあります。

  5. インストール後の必要な設定を実行kします。 MySQL をインストールしたら、項2.10. 「インストール後の設定とテスト」 をお読みください。この項では MySQL の動作検証に関する重要な情報を提供します。また最初の MySQL ユーザーアカウントの設定方法、特にパスラードを割り当てられるまでのパスワードが無い場合 の設定についても説明します。この項はバイナリおよびソース配布双方の MySQL のインストールを網羅しています。

  6. MySQL のベンチマーク スクリプトの実行を希望される場合、Perl の MySQL サポートが必要になります。項2.15. 「Perl のインストールに関する注釈」 参照。

2.1. 一般的なインストールの問題

MySQL のインストール手順は MySQL Enterprise Server あるいは MySQL Community Server によって異なります。.使用できるプラットフォームはどの配布版をインストールするかによって異なります。

MySQL Enterprise Server の場合、Enterprise のインストーラを使用してメインの配布版および必要なサービスパックあるいはホットフィックスをインストールします。Enterprise インストーラをまだ用意していないプラットフォームの場合、Community Server の説明書を使用します。

MySQL Community Server には、メインの配布版とホットフィックスとその更新をインストールします。

  • バイナリのリリースあるいはソースのリリースをダウンロードしてソースコードで MySQL を構築します。

  • MySQL を BitKeeper ツリーから取り出してソースから構築します。BitKeeper ツリーには最新の開発コードが含まれています。

次の数項で配布版の選択、ダウンロード、および検証に必要な情報を掲げています。本章の次項以降で選択された配布版のインストールについて説明します。バイナリの配布版についは、項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 の説明書を参照してください。MySQL をソースから構築するには、項2.9. 「ソースのディストリビューションを使用した MySQL のインストール」 の説明書を使用します。

2.1.1. MySQL Community Server がサポートしているオペレーティング システム

この項では MySQL Community Server が動作するオペレーティング システムを採り上げます。

重要MySQL ABではこの項で採り上げるすべてのオペテーティング システムに公式のサポートは提供していません。MySQL AB が公式にサポートしているプラットフォームは MySQL のウェブサイトにある http://www.mysql.com/support/supportedplatforms.html を参照してください。

弊社では GNU Autoconf を使用していますので、C++ のコンパイラを実装した最新のシステムに MySQL をポートして POSIX スレッドを実装できます。(スレッドのサポートがサーバに必要です。クライアントコードのみをコンパイル摩る場合には、C++ コンパイラーのみが必要です。)弊社では主に Linux (SuSE および Red Hat)、FreeBSD、および Sun の Solaris (バージョン 8 と 9) を使用して自社でソフトウェアの開発を行っています。

MySQL は以下のオペレーティング システムとスレッド パッケージの組み合わせでのコンパイルでよい結果が出ています。多くのオペレーティング システムでは、ネイティブのスレッドのサポートは最新バージョンのみで動作します。

すべてのプラットフォームが MySQL の動作に適しているという訳ではありません。どのプラットフォームが高負荷のミッション クリティカルな MySQL サーバに適しているかは以下の要因によります。

  • スレッド ライブラリの総合的な安定性。プラットフォームそのものは評判が良くてすべてがパーフェクトであっても、MySQL の安定性はそのプラットフォームではなくスレッドのライブラリに因ります。

  • kernel および スレッド ライブラリの特徴は SMP (対称型マルチプロセッサ) を利点を活かせることにあります。換言すれば、プロセッサがスレッドを作成すると、オリジナル プロセスの異なる CPU でスレッドを実行できることです。

  • kernel およびスレッド ライブラリの特徴は過剰なコンテキスト スイッチなしで、狭いクリティカルな領域で頻繁に mutex を取得してリリースする多くのスレッドを実行できることです。pthread_mutex_lock() の実装によって CPU の時間節約の汲々とした場合、MySQL に大きな影響を与えます。この問題に適切に対処しないと、別の CPU を追加することにより実質的に MySQL が遅くなります。

  • 総合的なファイルシステムの安定性とパフォーマンス。

  • テーブルが大きい場合、パフォーマンスはファイルシステムの大きなファイルの処理およびその効果的な処理能力によって影響を受けます。

  • MySQL AB のプラットフォームに対する専門知識プラットフォームに対する知識および経験が豊富な場合、プラットフォームに特化した最適化および強化をコンパイル時にできます。弊社はまた MySQL を実装したお客様の最適なシステム構築に助言することもできます。

  • 実際の事例に基づいた類似の構築に対する豊富な経験

  • MySQL を使用した類似の構築によるプラットフォームの多くの成功事例(お客様)この成功事例の数が多いほどプラットフォーム独特の問題に対する対処能力が向上し、問題を迅速に処理できます。

以前説明した基準では、この段階での MySQL の特性を最適に活かす組み合わせは x86 の 2.4 あるいは 2.6 kernal、および ReiserFS (あるいは同様の Linux 配布版) および SPARC 搭載 Solaris (2.7-9) です。三番目に FreeBSD が来ますが、弊社はこのスレッド バイナリが改善されてトップ グループの仲間入りすることを期待しています。弊社ではまた近いうちに MySQL は現在コンパイルされ動作できるものの、トップ グループに比べるとその安定性とパフォーマンスで劣る他のすべてのプラットフォームをトップ グループに含めたいと希望していますこれを実現するには MySQL が依存している オペレーティング システムやライブラリの開発社と共同作業する必要があります。お客様がそれらのコンポーネントの改善にご興味があり、またその開発に影響を及ぼすに十分な立場の方で、MySQL をさらによくするための詳細な説明書が必要な場合には、MySQL internals メーリング リストにメールお願いします。項1.6.1. 「MySQL メーリング リスト」 参照。

様々なオペレーティング システムの比較表を以前作成しましたが、この目的はそれらのオペレーティング システムの良し悪しを論ずることが目的ではないことをご理解願います。弊社では MySQL を特定の目的に対して OS を選択しているのであって他意はありません。このことを念頭にして頂くと、弊社の比較の結果は他の要素が加わった場合には異なる場合があることもご理解頂けるものと思います。あるケースに於いて、ある一つの理由である一つ OS が MySQL の試験でいい結果であるということは、弊社がその特定のプラットフォームに関して試験および最適化で少しばかり多くの時間を割いたということに他なりません。弊社では最近お客様のためにどのプラットフォームが MySQL の動作に一番適しているかの検討を始めました。

2.1.2. インストールする MySQL 配布版の選択

MySQL をインストールする際に、どのバージョンをインストールするか決める必要があります。MySQL の開発にはいくつかのリリース シリーズがありますので、お客様の仕様に一番適合したものを選択できます。インストールするバージョンを決めたら、配布フォーマットを選択します。リリースはバイナリあるいはソース フォーマットでご利用頂けます。

2.1.2.1. インストールする MySQL のバージョンの選択

最初に決めることは生産 (安定) リリースあるいは開発リリースのどちらにつるかと云うことです。MySQL の開発に於いては、開発の完成度に応じた複数のリリース シリーズがあります。

  • MySQL 5.1 は現在開発中のリリース シリーズです。

  • MySQL 5.0 は現在の安定した (量産品) リリース シリーズです。新しいリリースはバグ出しのためのみのリリースです。安定性の効果をもたらす新しい機能は追加されていません。

  • MySQL 4.1 は以前の安定した (量産品) リリース シリーズです。新しいリリースは重大なバグ出しやセキュリティ対策のためにリリースされます。このシリーズには重要な新しい機能は導入されていません。

  • MySQL 4.0 および 3.23 は旧バージョンの安定した (量産用) リリース シリーズです。これらのバージョンは既に廃番になっていますので、新しいりリーズは特に重大なバグ出し (主にセキュリティの問題) のためにのみリリースされます。

弊社としては完全にコードが使用できなくなる (凍結) とは想定していません。というのは、これによってバグ出しや修正など必要が対策が出来なくなるからです。「ある程度凍結」 は現在の量産リリースの機能に影響を及ぼさずに小さな修正ができるものを意味しています。当然のことながら、旧バージョンのバグ出しで関連するものはその後のバージョンに反映されています。

お客様が MySQL を最初にお使いになる場合やバイナリの配布のないシステムへのポートをご検討されている場合には、量産シリーズを選択されるようお勧めします。現在の量産シリーズは MySQL 5.0 です。ご利用前にMySQL リリースのすべてを、開発段階のものも含めて、MySQL のベンチマークでチェックし、広範な一連のテストを行うようお願いします。

お客様が旧バージョンを使用していてアップグレードを希望される場合で、シームレスのアップグレードを好まれる場合には、最新バージョンへアップグレードする際には現在お使いのシリーズ(バージョン番号の最後の数字が現在お使いのものより新しいもの)と同じシリーズでアップグレードする必要があります。弊社では致命的なバグの修正および小さな、比較的 「安全な」 変更のみをそのバージョンに行っています。

量産リリースのシリーズで新しい機能の使用を希望される場合には、開発シリーズのバージョンを使用できます。開発シリーズは量産シリーズに比べて安定性に欠けることをご理解きださい。

現在までのすべてのパッチおよびバグ修正を含む最も最新のソースを希望される場合、弊社の BitKeeper レポジトリの中から選択できます。これらは 「リリース版」 ではありませんが、機能ベースのリリースを基にしたコードを試作品を利用できます。

MySQL の命名規則は 3 つの番号に接尾辞を使用しています。例えば、mysql-5.0.12-beta のようになります。リリースの番号の内訳は以下のようになります。

  • 最初の (5) は主なバージョンおよびファイル フォーマットを表します。MySQL 5 のすべてのリリースのファイル フォーマットは同じです。

  • 2 番目の番号は (0) はリリースのレベルを表します。主なバージョン番号とリリース レベルを一緒にすると、リリースのシリーズ番号を表します。

  • 3 番目の番号 (12) はリリース シリーズのバージョン番号を表します。これは新しいリリース毎に数が増えます。一般的には選択したシリーズの最新のバージョンを選択されます。

マイナーな更新が行われた場合、最後のバージョン文字列の数字が大きくなります。重要な機能の追加あるいは旧バージョンに互換性のないマイナーな変更が加えられた場合には、バージョン文字列の 2 番目の番号が大きくなります。ファイル フォーマットが変更になった場合、最初の番号の値が増えます。

リリース名にはまたリリースの安定性を示す接尾辞が含まれています。一連の接尾辞のシリーズの進展があった場合のリリースは安定性のレベルの改善の状態を表します。接尾辞には以下のようなものがあります。

  • アルファ は検討用のみのリリースを意味します。既知のバグはニュース セクション (付録 C. MySQL Change History 参照) に纏められています。殆どのアルファ リリースには新しいコマンドや拡張を導入されています。重要なコードの変更を含む能動的な開発がアルファ リリースで行われます。しかし、リリースを公開する前に弊社でテストを行ってます。

  • ベータ は新規の開発に使用できることを意味しています。ベータ リリースでは機能および互換性の変更ありません。しかし、ベータのリリースには多くの重大なバグが含まれている場合があります。

    すべてのAPI、外部から可視可能な構成、および SQL ステートメントのカラムは将来のベータ、リリース候補、あるいは量産リリースでも変更はありません。

  • rc はリリース候補を意味します。リリース候補は安定していると思われており、MySQL の社内のすべてのテストに合格したもので、すべての既知の致命的なランタイムのバグは修正しています。しかしながら、これらのリリースはすべてのバグが間違いなく取り除かれたと確信するに足る広範な使用事例を経たものではありません。マイナーは修正のみが追加されています。(リリース候補は以前公式にはガンマ リリースを呼ばれていたものです。)

  • 接尾辞が無い場合、そのリリースは一般的に利用できる (GA) あるいは量産リリースを意味します。GA リリースは安定しており、旧バージョンのすべてのバグ出しを完了したもので、信頼でき、重大なバグのない、量産システムの使用に適したものだと認識されています。重大なバグ出しのみがそのリリースに行われます。

MySQL は命名規則を使用していますが、それは殆どの他の製品と多少異なります。一般的には、同じリリースのシリーズに置き換えることなく数週間使用できた場合にはそのバージョンは使用しても通常は安全です。

すべての MySQL のリリースは標準のテストおよびベンチマーク実施して使用に関しては相対的な安全を確認さています。標準のテストは旧バージョンのすべてのバグ修正の経験と事例に基づいていますので、テスト項目とその精度はその都度向上しています。

リリースはすべて最低以下の項目でテストを実施しています。

  • 社内のテスト項目

    mysql-test ディレクトリには広範なテスト項目含まれます。弊社ではこれらのテストをすべてのサーババイナリに実施しています。これらのテスト項目の詳細に関しては、項25.1.2. 「MySQL Test Suite」 を参照してください。

  • MySQL ベンチマーク項目

    このテストでは一連の共通のクエリを実施しています。最新の最適化バッチが実際にコードの処理速度の向上させるかについてもテストを実施して決めています。項6.1.4. 「MySQL ベンチマークスィート」 参照。

  • クラッシュ テスト

    テストではデータベースがサポートしている機能およびその可能性と限界に以下テストします。項6.1.4. 「MySQL ベンチマークスィート」 参照。

弊社ではまた最新の MySQL バージョンを社内の生産環境で、最低でも 1 台のマシンで実施しています。100GB 以上のデータで検証しています。

2.1.2.2. 配布フォーマットの選択

インストールする MySQL を決定したら、次にバイナリの配布にするかソースの配布にするか決める必要があります。殆どの場合、お客様のプラットフォームに適したものがある場合、バイナリの配布を使用することになります。バイナリの配布は多くの Linux の RPM あるいは Mac OS X または Solaris の PKG パッケージ インストーラなど多くのプラットフォームがネイティブのフォーマットで利用できます。配布は Zip アーカイブあるいは圧縮 tar ファイルで利用できます。

バイナリの配布を選択する理由は以下のようになります。

  • バイナリの配布は一般的にはソースの配布よりインストールが簡単です。

  • ユーザー毎の仕様に満足するために、弊社ではいくつかのサーバをバイナリの配布で用意しています。mysqld は最適化したサーバで小規模ながら高速のバイナリです。mysqld-debug はデバッグのサポートでコンパイルしています。

    これらのサーバはすべて同じソースの配布でしかも異なる設定オプションでコンパイルされています。すべてのネイティブ MySQL クライアントはどの MySQL バージョンにも接続できます。

環境によっては、MySQL をソースの配布でインストールしたほうが良い場合もあります。

  • 明示のロケーションでの MySQL をインストールが望まれる場合もあります。標準のバイナリの配布はインストールのロケーションにこだわりませんが、MySQL コンポーネントを希望する場所に配置することで柔軟性を更に向上させる必要に駆られる場合があります。

  • mysqld を標準のバイナリの配布には含まれていない機能を使用した設定を希望される場合があります。機能の可用性を確認するための最も一般的な予備オプションの一覧を以下に示します。

    • --with-libwrap

    • --with-named-z-libs (これはいくつかのバイナリに実行されます)

    • --with-debug[=full]

  • mysqld を標準のバイナリの配布に含まれるいくつかの機能を使用しないで設定する場合に使用します。例えば、バイナリは通常すべての文字セットをサポートするようにコンパイルされています。小規模な MySQL サーバを希望される場合、使用する文字セットのみのサポートでコンパイルできます。

  • 特別なコンパイラー (pgcc など) あるいはお客様のプロセッサに適したコンパイラーを使用できます。バイナリの配布は同じプロセッサ ファミリーの様々なプロセッサで動作するオプションにコンパイルされています。

  • BitKeeper レポジトリの最新のソースを使用して現行のすべての bugfix にアクセスできます。例えば、バグが見つかりそれを MySQL の開発チームに送ると、バグはソースのレポジトリで修正され、そのレポジトリにアクセスできます。バグの修正はリリースが実際に公開されるまでリリースには表示されません。

  • MySQL の開発に使用された C および C++ コードを読む (修正し) ことができます。これを行うには、ソースの配布を取得する必要があります。ソースコードは常に最適なマニュアルです。

  • ソースの配布にはバイナリの配布より多くのテスト項目および例があります。

2.1.2.3. リリースの更新方法と時期

MySQL の展開は極めて速いため、他の MySQL ユーザーと新しい開発を共有したいと考えています。弊社では他でも必要と思われる新規の有用な機能あればはいつでも新しいリリースを公開していきます。

導入が容易なユーザー要求の新機能についてもユーザーを支援していきます。ライセンス供与を受けたユーザーのご希望、特に弊社がサポートしているお客様のご要望に耳を傾け、それを支援して参ります。

新しいリリースをダウンロードする必要はありません。 ニュース欄をご覧になれば新しいリリースがお客様の仕様にを満たしているか確認できます。付録 C. MySQL Change History 参照。

MySQL の更新は以下の方針に基づいています。

  • Enterprise Server は 18 ヵ月毎にリリースし、その都度 4 ヵ月毎のサービス パックおよび毎月の更新を補充していきます。Community Server は年に 2–3 回リリースを出します。

  • リリースは各シリーズ毎に発行します。Enterprise Server のリリースの番号は偶数(例えば、5.1.20) を使用しています。Community Server のリリースには奇数 (例えば、5.1.21) を使用します。

  • いくつかのプラットフォームのバイナリの配布は主要なリリースの際に配布します。他のシステムのバイナリの配布は他で行われる場合がありますが、その頻度は多分少ないものと思われます。

  • バグが見つかり次第できるだけ早急に、難解なバグを除く小さいものや余り重大でないものから最初に対処します。バグ修正版は一般に公開している弊社の BitKeeper のレポジトリのソースから即座に入手できるようになっており、そのバグの修正は次回のリリースに更新されます。

  • リリースでセキュリティの脆弱性および深刻なバグが見つかった場合には、弊社の方針に則ってそれを新しいしリースで早急に対応します。(弊社では他の会社もこのように早急な対策するよう希望しています!)

2.1.2.4. リリースの原理—リリースの未知のバグ

弊社ではバグのないリリースを目指してかなりの時間と労力を費やしています。弊社の方針で MySQL バージョンに既知の致命的な再現性のバグがある場合には量産品をリリースしません。

弊社では設計に関わるすべての一般的な問題、バグ、および懸案事項をすべて文書にまとめています。項B.1.8. 「Known Issues in MySQL」 参照。

弊社では MySQL バージョンの安定性を損なわずに修正可能なバグをすべて修正することを目標にしています。場合によっては、これは安定したバージョン (量産品) ではなく開発バージョンの問題の修正を意味します。当然のことですが、そのような問題をユーザーに認識させるために文書にまとめています。

以下に弊社のビルド プロセスを説明します。

  • http://bugs.mysql.com/ にあるバグ データベースのカスタマーサポート リスト、および MySQL 外部からのメーリング リストでバグを監視します。

  • 現在使用されているバージョンでレポートされたすべてのバグはバグの データベースに入力されます。

  • バグを修正した場合には必ずテストケースを作成し、バグが検知されずに再現しないようにテスト システムに加えます。(修正したバグのおよそ 90% にテストケースがあります。

  • MySQL に追加する各新規機能にテストケースを作成します。

  • 新しい MySQL をリリースする前に、報告されたすべての再現性バグが MySQL バージョン (3.23.x、4.0.x、4.1.x、5.0.x、5.1.x など) で修正されているか確認します。MySQL の内部の設計上の問題で修正が不可能な場合には、これをマニュアルに詳細に記録します。項B.1.8. 「Known Issues in MySQL」 参照。

  • サポートしているバイナリのすべてのプラットフォームにビルドを行い、それらのすべてに一連のテストおよびベンチマークを実行します。

  • 一連のテストあるいはベンチマークに失敗したプラットフォームにはバイナリを公開しません。その問題がソースの一般的な問題の場合には、その問題を解決し、ビルドしてすべてのシステムに再度ゼロからテストを実施します。

  • ビルドとテスト プロセスに一週間かかります。このプロセスで致命的なバグに関する報告があった場合 (例えば、コアのダンプにつながるバグ)、その問題を修正し再度ビルド プロセスを実行します。

  • バイナリを http://dev.mysql.com/ で公開した後、その通知メッセージを mysql に送り announce メーリング リストに発表します。項1.6.1. 「MySQL メーリング リスト」 参照。通知メッセージにはリリースに対するすべての変更およびそのりシースの既知の問題が含まれています。このリリース ノートの既知の問題セクションはこれまではほんの一握りのリリースに必要でした。

  • ユーザーに MySQL の機能に素早くアクセスして頂くために、新しい MySQL リリースを 4-8 週間でリリースする予定です。ソースコードのスナップショットは毎日ビルドしており、http://downloads.mysql.com/snapshots.php から入手できます。

  • 弊社で最大限の努力をした場合でも、リリース公開後に特定のプラットフォームで構築中に重大な問題があるとの報告を受ける場合ばあります。弊社ではそれを直ぐに修正してそのプラットフォームに新しい 'a' リリースをビルドします。多数にユーザーにご利用頂いているお陰で、問題の発見および解決が非常に迅速にできます。

  • 安定したリリースを可能にする弊社の追跡記録は非常に優れています。過去 150 のリリースで、これまで新しいビルドはそのうち 10 件以下です。これらの内 3 件は、バグが弊社のビルド マシンの一つで間違った glibc ライブラリにあったために、バグの追跡に長い時間がかかりました。

2.1.2.5. MySQL AB でコンパイルした MySQL バイナリ

MySQL AB のサービスの一環として、弊社では弊社のサイトでコンパイルしたシステムあるいは MySQL のサポーターのご好意によりサポーターのマシンにアクセスしてコンパイルした MySQL のバイナリを配布しております。

プラットフォームに特化したパッケージ フォーマットのバイナリに加え、弊社では圧縮した tar ファイル (.tar.gz files) のフォームで多数のバイナリ配布を提供しています。.項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 参照。

弊社のウェブ サイトから入手可能な MySQL のリリースのRPM 配布は 5.1 MySQL AB が作成したものです。

Windows の配布は、項2.3. 「Windows に MySQL をインストールする」 を参照してください。

これらの配布はスクリプト Build-tools/Do-compile を使用して生成したもので、そのスクリプトでソースコードをコンパイルして、scripts/make_binary_distribution を使用して tar.gz アーカイブを作成します。

これらのバイナリは以下のコンパイラーとオプションを使用して設定およびビルドします。これらの情報は各バイナリの tar ファイル配布のスクリプト bin/mysqlbug にある変数 COMP_ENV_INFO および CONFIGURE_LINE をご覧頂くことで取得できます。

以下のいずれかの configure コマンドに最適なオプションをお持ちの方は MySQL internals メーリング リストにメールして頂ければ幸甚です。項1.6.1. 「MySQL メーリング リスト」 参照。

MySQL のデバッグ バージョンのコンパイルを希望される場合、--with-debug あるいは --with-debug=full を以下の configure コマンドに追加して -fomit-frame-pointer オプションを削除します。

以下のバイナリは MySQL AB の開発システムでビルドされます。

  • Linux 2.4.xx x86 / gcc 2.95.3:

    CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro
    -felide-constructors" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --disable-shared
    --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    
  • Linux 2.4.x x86 / icc (Intel C++ コンパイラ 8.1 あるいはそれ以降のリリース):

    CC=icc CXX=icpc CFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict"
    CXXFLAGS="-O3 -unroll2 -ip -mp -no-gcc -restrict" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --enable-assembler
    --disable-shared --with-client-ldflags=-all-static
    --with-mysqld-ldflags=-all-static --with-embedded-server --with-innodb
    

    Intel のコンパイラのバージョン 8.1 以降は 'pure' C (icc) および C++ (icpc) 個別のドライバを使用しています。icc バージョン 8.0 あるいはそれ以前のバージョンを MySQL の構築に使用する場合、CXX=icc を設定する必要があります。

  • Linux 2.4.xx Intel Itanium 2 / ecc (Intel C++ Itanium コンパイラ 7.0):

    CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2
    -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile
    
  • Linux 2.4.xx Intel Itanium / ecc (Intel C++ Itanium コンパイラ 7.0):

    CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile
    
  • Linux 2.4.xx alpha / ccc (Compaq C V6.2-505 / Compaq C++ V6.3-006):

    CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch
    generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-mysqld-ldflags=-non_shared
    --with-client-ldflags=-non_shared --disable-shared
    
  • Linux 2.x.xx ppc / gcc 2.95.4:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-embedded-server
    --with-innodb
    
  • Linux 2.4.xx s390 / gcc 2.95.3:

    CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
    
  • Linux 2.4.xx x86_64 (AMD64) / gcc 3.2.1:

    CXX=gcc ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • Sun Solaris 8 x86 / gcc 3.2.3:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-innodb
    
  • Sun Solaris 8 SPARC / gcc 3.2:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-z-libs=no
    --with-named-curses-libs=-lcurses --disable-shared
    
  • Sun Solaris 8 SPARC 64-bit / gcc 3.2:

    CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no
    --with-named-curses-libs=-lcurses --disable-shared
    
  • Sun Solaris 9 SPARC / gcc 2.95.3:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses
    --disable-shared
    
  • Sun Solaris 9 SPARC / cc-5.0 (Sun Forte 5.0):

    CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt
    -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9"
    ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --enable-assembler
    --with-named-z-libs=no --enable-thread-safe-client --disable-shared
    
  • IBM AIX 4.3.2 ppc / gcc 3.2.3:

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2
    -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --disable-shared
    
  • IBM AIX 4.3.3 ppc / xlC_r (IBM Visual Age C/C++ 6.0):

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared --with-innodb
    
  • IBM AIX 5.1.0 ppc / gcc 3.3:

    CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc
    -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared
    
  • IBM AIX 5.2.0 ppc / xlC_r (IBM Visual Age C/C++ 6.0):

    CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    CXX=xlC_r CXXFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no
    --disable-shared --with-embedded-server --with-innodb
    
  • HP-UX 10.20 pa-risc1.1 / gcc 3.1:

    CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX
    -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti
    -O3 -fPIC" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-pthread --with-named-thread-libs=-ldce
    --with-lib-ccflags=-fPIC --disable-shared
    
  • HP-UX 11.00 pa-risc / aCC (HP ANSI C++ B3910B A.03.50):

    CC=cc CXX=aCC CFLAGS=+DAportable CXXFLAGS=+DAportable ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-embedded-server --with-innodb
    
  • HP-UX 11.11 pa-risc2.0 64bit / aCC (HP ANSI C++ B3910B A.03.33):

    CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    
  • HP-UX 11.11 pa-risc2.0 32bit / aCC (HP ANSI C++ B3910B A.03.33):

    CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-innodb
    
  • HP-UX 11.22 ia64 64bit / aCC (HP aC++/ANSI C B3910B A.05.50):

    CC=cc CXX=aCC CFLAGS="+DD64 +DSitanium2" CXXFLAGS="+DD64 +DSitanium2"
    ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile --disable-shared
    --with-embedded-server --with-innodb
    
  • Apple Mac OS X 10.2 powerpc / gcc 3.1:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • FreeBSD 4.7 i386 / gcc 2.95.4:

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --with-named-z-libs=not-used
    --disable-shared
    
  • FreeBSD 4.7 i386 /LinuxThreads gcc 2.95.4:

    CFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
    -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
    CXXFLAGS="-DHAVE_BROKEN_REALPATH -D__USE_UNIX98 -D_REENTRANT
    -D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads" ./configure
    --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
    --libexecdir=/usr/local/mysql/bin --enable-thread-safe-client
    --enable-local-infile --enable-assembler
    --with-named-thread-libs="-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
    -D_THREAD_SAFE -I /usr/local/include/pthread/linuxthreads
    -L/usr/local/lib -llthread -llgcc_r" --disable-shared
    --with-embedded-server --with-innodb
    
  • QNX Neutrino 6.2.1 i386 / gcc 2.95.3qnx-nto 20010315:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    

以下のバイナリは他のユーザーのご好意により MySQL AB に提供されたサード パーティのシステムにビルドされたものです。これらは単なる興味から提出します。MySQL AB はこのシステムを完全に管理していないため、それらにビルドされたバイナリのサポートには限界があります。

  • SCO Unix 3.2v5.0.7 i386 / gcc 2.95.3:

    CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium
    -felide-constructors" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared
    
  • SCO UnixWare 7.1.4 i386 / CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared --with-readline
    
  • SCO OpenServer 6.0.0 i386 / CC 3.2:

    CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client
    --disable-shared --with-readline
    
  • Compaq Tru64 OSF/1 V5.1 732 アルファ/ cc/cxx (Compaq C V6.3-029i / DIGITAL C++ V6.1-027):

    CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline
    speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias
    -fast -inline speed -speculate all -noexceptions -nortti" ./configure
    --prefix=/usr/local/mysql --with-extra-charsets=complex
    --enable-thread-safe-client --enable-local-infile
    --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared
    --with-mysqld-ldflags=-all-static
    
  • SGI Irix 6.5 IP32 / gcc 3.0.1:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared
    
  • FreeBSD/sparc64 5.0 / gcc 3.2.1:

    CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql
    --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --disable-shared --with-innodb
    

以下のコンパイル オプションは MySQL AB が以前提供したバイナリのパッケージに使用されていたものです。これらのバイナリはもはや現在使用されていませんが、このコンパイル オプションは参考のためにのみここのリストに載せています。

  • Linux 2.2.xx SPARC / egcs 1.1.2:

    CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3
    -fno-omit-frame-pointer -felide-constructors -fno-exceptions
    -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex --enable-thread-safe-client
    --enable-local-infile --enable-assembler --disable-shared
    
  • Linux 2.2.x with x686 / gcc 2.95.2:

    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 --disable-shared
    --with-extra-charsets=complex
    
  • SunOS 4.1.4 2 sun4c / gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure
    --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex
    --enable-assembler
    
  • SunOS 5.5.1 (またはそれ以降) sun4u / egcs 1.0.3a or 2.90.27 or gcc 2.95.2 およびそれ以降:

    CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors
    -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql
    --with-low-memory --with-extra-charsets=complex --enable-assembler
    
  • SunOS 5.6 i86pc / gcc 2.8.1:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-low-memory --with-extra-charsets=complex
    
  • BSDI BSD/OS 3.1 i386 / gcc 2.7.2.1:

    CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    
  • BSDI BSD/OS 2.1 i386 / gcc 2.7.2:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    
  • AIX 4.2 / gcc 2.7.2.2:

    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    --with-extra-charsets=complex
    

2.1.3. MySQL の取得方法

MySQL の現在のバージョン情報およびダウンロードの説明書に関してはダウンロード ページ http://dev.mysql.com/downloads/ を参照してください。MySQL のダウンロードのミラーサイトの最新の完全な更新リストは、http://dev.mysql.com/downloads/mirrors.html を参照してください。そこにはまた MySQL ミラーサイトのなり方および不良ミラーおよび旧式ミラーのレポート方法に関する情報が載せてあります。

弊社の主要なミラーは http://mirrors.sunsite.dk/mysql/ にあります。

2.1.4. MD5 チェックサムあるいは GnuPGを用いたパッケージの品質の検証

お客様の仕様に適した MySQL のパッケージをダウンロードしそれをインストールする前に、そのパッケージが元のままで改ざんされていないか確認する必要があります。MySQL AB では品質の確認に 3 つの方法を提供しています。

  • MD5 チェックサム

  • GnuPG、GNU Privacy Guard を使用した暗号署名

  • RPM パッケージの場合、内蔵 RPM 品質検証メカニズム

以下の項ではこれらのメソッドの使用方法について説明します。

MD5 チェックサムおよび GPG 署名が一致しない場合には、別のミラーサイトからそれぞれのパッケージを再度ダウンロードします。何回繰返してもパッケージの完全性を確認できない場合には、その状況と完全なパッケージ名および使用したダウンロード サイトを明記の上、 あるいは までご連絡ください。バグのレポート システムではダウンロードの問題をレポートしないでください。

2.1.4.1. MD5 チェックサムの検証

MySQL パッケージをダウンロードしたら、MD5 チェックサムが MySQL のダウンロード ページのチェックサムを同じであることを確認します。各パッケージには以下おコマンドで検証できるそれぞれのチェックサムがあり、その package_name はお客様がダウンロードするパッケージの名前です。

shell> md5sum package_name

例:

shell> md5sum mysql-standard-5.1.15-beta-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945  mysql-standard-5.1.15-beta-linux-i686.tar.gz

結果おチェックサム (16 桁の数字) が各パッケージの真下のダウンロード ページのチェックサムと一致していることを確認する必要があります。

:アーカイブ (例えば、.zip あるいは .tar.gz ファイル) のチェックサムでそのアーカイブの中に含まれるファイルのチェックサムでないことを確認します。

すべてのオペレーティング システム md5sum コマンドをサポートしている訳ではないのでその点ご留意ください。中には、単に md5 と呼ばれるものもあり、その他は含まれていまん。Linux の場合、それは GNU Text Utilities パッケージの一部で、様々なプラットフォームに利用できます。ソースコードは http://www.gnu.org/software/textutils/ からもダウンロードできます。OpenSSL の場合には、代わりにコマンド openssl md5 package_name を使用できます。Windows の md5 コマンドライン ユーティリティは http://www.fourmilab.ch/md5/ から入手できます。winMd5Sum はグラフィカルな MD5 チェック ツールで http://www.nullriver.com/index/products/winmd5sum にあります。

2.1.4.2. GnuPG を使用した署名確認

パッケージの完全性およびその典拠を確認する別のメソッドとして暗号署名を使用します。このメソッドは MD5 チェックサムを使用するより信頼できますが、手間がかかります。

MySQL AB では、MySQL ダウンロード パッケージを GnuPG (GNU プライバシーガード) で署名しています。GnuPG はオープン ソースで周知の Phil Mimmerman 氏の周知の Pretty Good Privacy (PGP) の代替品です。GnuPG の詳細およびその取得並びにシステムへのインストール方法については http://www.gnupg.org/ を参照してください。殆どの Linux の配布にはデフォルトで GnuPG がインストールされています。GnuPG の詳細は、http://www.openpgp.org/ を参照してください。

特定のパッケージの署名を証明するには、最初に MySQL AB's public GPG ビルド キーを取得する必要があります。それは http://www.keyserver.net/ で入手できます。.取得するキーは build@mysql.com です。また以下のテキストから直接そのキーを切り取り/貼り付けできます。

Key ID:
pub  1024D/5072E1F5 2003-02-03
     MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5

Public Key (ASCII-armored):

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----

ビルド キーを個人の公開 GPG キーリングにインポートするには、gpg --import を使用します。例えば、キーを mysql_pubkey.asc ファイルに保存した場合、インポート コマンドは以下のようになります。

shell> gpg --import mysql_pubkey.asc

ダウンロードして公開ビルド キーをインポートした後、所望の MySQL パッケージと同じくダウンロード ページで入手できるそれに相当する署名をダウンロードします。署名ファイルは配布ファイルの .asc 拡張と同じ名前です。例えば、

配布ファイルmysql-standard-5.1.15-beta-linux-i686.tar.gz
署名ファイルmysql-standard-5.1.15-beta-linux-i686.tar.gz.asc

両方のファイルが同じディレクトリにあることを確認し、次に以下のコマンドを実行して配布ファイルの署名を証明します。

shell> gpg --verify package_name.asc

例:

shell> gpg --verify mysql-standard-5.1.15-beta-linux-i686.tar.gz.asc
gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 5072E1F5
gpg: Good signature from "MySQL Package signing key (www.mysql.com) <build@mysql.com>"

Good signature メッセージは署名が証明されたことを意味します。insecure memory が表示された場合無視して構いません。

公開キーの取扱いに関する情報は GPG の資料を参照してください。

2.1.4.3. RPMを使用した署名の確認

RPM には、個別の署名はありません。RPM パッケージには内蔵の GPG 署名および MD5 チェックサムがあります。以下のコマンドを実行してパッケージを検証できます。

shell> rpm --checksig package_name.rpm

例:

shell> rpm --checksig MySQL-server-5.1.15-beta-0.i386.rpm
MySQL-server-5.1.15-beta-0.i386.rpm: md5 gpg OK

:RPM 4.1 を使用していてそれが次を表示した場合 (GPG) NOT OK (MISSING KEYS:GPG#5072e1f5)、MySQL 公開キー作成のキーをお客様の GPG キーリングにインポートしている場合でも、このキーを最初に RPM キーリングにインポートする必要があります。RPM 4.1 はこの段階でお客様個人の GPG キーリング (あるいは GPG そのもの) を使用しません。むしろ、それはシステム全体のアプリケーションでユーザーの GPG 公開キーリングはユーザー特定のものですのでそれは自身のキーリングとして残ります。MySQL 公開キーを RPM キーリングにインポートするには、以下の説明に従って最初にキーリングを取得します。項2.1.4.2. 「GnuPG を使用した署名確認」.次に rpm --import を使用してそのキーをインポートします。例えば、公開キーをファイル名 mysql_pubkey.asc に保存してある場合、以下おコマンドを使用して公開キーをインポートします。

shell> rpm --import mysql_pubkey.asc

MySQL 公開キーを取得する必要がある場合には、項2.1.4.2. 「GnuPG を使用した署名確認」 を参照してください。

2.1.5. インストールのレイアウト

この項では MySQL AB が供給したバイナリあるいはソースの配布のインストールにより作成されたディレクトリのデフォルトのレイアウトについて説明します。他のベンダーから供給された配布は以下に示すレイアウトと異なるレイアウトを使用する場合があります。

Windows 5.1 で動作している MySQL のデフォルトのインストール ディレクトリは C:\Program Files\MySQL\MySQL Server 5.1 になります。(Windows のユーザーの中には公式にデフォルトとして使用されていた C:\mysql にインストールを希望される場合があります。しかし、サブディレクトリのレイアウトはそのまま変わりません。)インストール ディレクトリには以下のサブディレクトリがあります。

ディレクトリディレクトリの中身
binクライアント プログラムと mysqld サーバ
dataログ ファイル、データベース
DocsCHM フォーマットのマニュアル
examplesプログラムおよびスクリプト例
include(ヘッダー) ファイルを含む
libライブラリ
scriptsユーティリティ スクリプト
shareエラーメッセージ ファイル

MySQL AB の Linux RPM 配布で作成されたインストールは以下のシステム ディレクトリのファイルに格納されます。

ディレクトリディレクトリの中身
/usr/binクライアント プログラムおよびスクリプト
/usr/sbinmysqld サーバ
/var/lib/mysqlログ ファイル、データベース
/usr/share/info情報フォーマットのマニュアル
/usr/share/manUnix マニュアル ページ
/usr/include/mysql(ヘッダー) ファイルを含む
/usr/lib/mysqlライブラリ
/usr/share/mysqlエラー メッセージと文字列セット ファイル
/usr/share/sql-benchベンチマーク

Unix では、tar ファイルのバイナリ配布が選択したインストールのロケーション (一般的には /usr/local/mysql) で解凍するとインストールされそのロケーションで以下のディレクトリが作成されます。

ディレクトリディレクトリの中身
binクライアント プログラムおよび mysqld サーバ
dataログ ファイル、データベース
docs情報フォーマットのマニュアル
manUnix マニュアル ページ
include(ヘッダー) ファイルを含む
libライブラリ
scriptsmysql_install_db
share/mysqlエラーメッセージ ファイル
sql-benchベンチマーク

ソースの配布がそれを設定してコンパイルした後にインストールされます。デフォルトでは、インストール手順によってファイルを /usr/local の以下のサブディレクトリにインストールします。

ディレクトリディレクトリの中身
binクライアントプログラムおよびスクリプト
include/mysql(ヘッダー) ファイルを含む
DocsInfo のマニュアル、CHM フォーマット
manUnix マニュアル ページ
lib/mysqlライブラリ
libexecmysqld サーバ
share/mysqlエラーメッセージ ファイル
sql-benchベンチマークおよびcrash-me テスト
varデータベースおよびログ ファイル

インストールしたディレクトリの中では、ソースのインストールのレイアウトが以下の点でバイナリのインストールと異なります。

  • mysqld サーバは bin ディレクトリではなく libexec ディレクトリにインストールされます。

  • データ ディレクトリは data ではなく var です。

  • mysql_install_dbscripts ディレクトリではなく bin ディレクトリにインストールされます。

  • ヘッダーファイルとライブラリのディレクトリは includel および lib ではなく include/mysql および lib/mysql.

ソース配布の一番上の ディレクトリにある scripts/make_binary_distribution スクリプトを実行してコンパイルされたソースの配布でお客様ご自身のバイナリのインストールを作成できます。

2.2. バイナリの配布を使用した標準 MySQL のインストール

次の数項ではそれぞれのプラットフォームのネイティブなパッケージ オーマットを使用したパッケージで提供しているプラットフォーム上の MySQL のインストールについて説明します。(これはまた 「binary install.」 の実行として知られています。) しかし、MySQL のバイナリの配布はその他多くのプラットフォームでも利用できます。すべてのプラットフォームに適用できるこれらのパッケージの包括的なインストールの説明は 項2.8. 「他の Unix 系システムへの MySQL のインストール」 を参照してください。

利用できるその他のバイナリの配布およびその取得方法に関する詳細は 項2.1. 「一般的なインストールの問題」 を参照してください。

2.3. Windows に MySQL をインストールする

バージョン 3.21 以来 MySQL AB は、MySQL の Windows 版 を提供しており、現在 MySQL の日々のダウンロードでかなりの部分のパーセントを占めています。この項では MySQL の Windows へのインストールのプロセスについて説明します。

:MySQL を MySQL 4.15 以前のバージョンからアップグレードする場合、最初に以下の手順を踏む必要があります。項2.3.14. 「Windows を使用した MySQL をアップグレードする」.

  • 9x、Me、NT、2000、XP、あるいは Windows Server 2003 などの 32 ビットの Windows オペレーティング システムの場合。

    Windows NT-ベースのオペレーティング システム (NT、2000、XP、2003) の場合サービスで MySQL サーバをご利用頂けます。Windows NT-ベースのオペレーティング システムの使用を強くお勧めします。項2.3.11. 「Windows のサービスとして MySQL を起動する」 参照。

    一般的には Windows に MySQL をインストールするには管理者権限のアカウントを使用してインストールする必要があります。管理者権限が無い場合、PATH 環境変数の編集あるいは サービス管理マネージャにアクセスするなどの操作の場合に問題に遭遇する場合があります。.

  • TCP/IP のプロトコルのサポート。

  • お客様の仕様に基づいた解凍、インストール、およびデータベースの作成に十分なスペース (一般的には最低でも 200 メガバイトを推奨します。)

お客様の MySQL の利用の仕方によって他の条件が必要になる場合もあります。

  • ODBC を用いて MySQL サーバに接続する場合には、コネクタ/ODBC ドライバが必要です。章 24. MySQL コネクタ 参照。

  • 4GB 以上のテーブルが必要な場合、NTFS あるいは最新のファイルシステムに MySQL をインストールします。テーブルを作成する時には MAX_ROWS あるいは AVG_ROW_LENGTH の使用を忘れないでください。項12.1.8. 「CREATE TABLE 構文」 参照。

Windows 用の MySQL にはいくつかの配布フォーマットがあります。

  • バイナリの配布が利用できるのでサーバを直ぐに起動できるよう必要なすべてをインストールできる設定プログラムを利用できます。別のバイナリの配布フォーマットではインストールの場所に単に解凍してインストールし、お客さまご自身で設定できるアーカイブがあります。詳細に関しては 項2.3.1. 「インストール用パッケージの選択」 を参照して下さい。

  • ソースの配布には Visual Studio のコンパイラ システムを使用した実行ファイル作成用のすべてのコードおよびサポートファイルが含まれています。

一般的には、インストーラを含むバイナリの配布が必要です。他のソリューションを使用するよりは簡単で、MySQL を設定して起動するための特別なツールは必要ありません。MySQL の Windows インストーラを GUI 設定ウイザードと一緒に用いると MySQL を自動的にインストールし、オプション ファイルを作成してサーバを起動し、デフォルトのユーザーアカウントをセキュアにします。

次項ではバイナリの配布を用いた Windows への MySQL のインストールについて説明します。インストーラが実装されていないインストール パッケージを使用する際は、以下の説明のプロシージャに従います。項2.3.5. 「非インストール Zip アーカイブからのインストール」.ソースの配布を使用したインストールは、項2.9.6. 「Windows にソースから MySQL をインストールする」 を参照してください。

Windows 用 MySQL の配布は、http://dev.mysql.com/downloads/ からダウンロードできます。項2.1.3. 「MySQL の取得方法」 参照。

2.3.1. インストール用パッケージの選択

Windows 用 MySQL 5.1 のインストールには、3 種類のインストール パッケージがあります。

  • 基本パッケージ:このパッケージは mysql-essential-5.1.15-beta-win32.msi に類似したファイル名を持ち、設定ウイザードを含む Windows への MySQL インストールの最低限のファイルを含んでいます。このパッケージには埋め込みサーバおよびベンチマーク スイートなどのオプションのコンポーネントは含まれていません。

  • 完全パッケージ:このパッケージは mysql-5.1.15-beta-win32.zip の類似のファイル名を持ち、設定ウイザードを含む MySQL の Windows への完全なインストールを実現します。このパッケージは埋め込みサーバおよびベンチマーク スイートなどのオプションのコンポーネントを含んでいます。

  • インストールなしのアーカイブ:このパッケージは mysql-noinstall-5.1.15-beta-win32.zip 類似のファイル名を持ち、設定ウイザードを除く完全なインストールパッケージと同様のすべてのファイルを含んでいます。このパッケージには自動インストーラが含まれていないので、手動でインストールして設定する必要があります。

殆どのユーザーには基本パッケージをお勧めします。それは .msi ファイルにあり、Windows Installer と一緒に使用します。完全およびインストールなしの配布は Zip アーカイブに格納されています。それらを使用するには、.zip ファイルを解凍するツールが必要です。

インストールのパッケージの選択によってインストールのプロセスが変わります。基本パッケージあるいは完全パッケージのいずれかを選択する場合、項2.3.2. 「自動インストーラで MySQL をインストールする」 を参照します。インストールしないアーカイブを選択する際は、項2.3.5. 「非インストール Zip アーカイブからのインストール」 を参照します。

2.3.2. 自動インストーラで MySQL をインストールする

初めて MySQL を使用するユーザーは MySQL インスとレーション ウイザードと MySQL 設定ウイザードを使用して MySQL を Windows にインストールします。これらは MySQL を初めて使用するユーザーが MySQL を使用して直ぐ起動できるように MySQL をインストールして設定できるようになっています。

MySQL インストール ウイザード および MySQL 設定ウイザードは基本および完全インストール パッケージで利用できます。それらを最も標準的な MySQL のインストールにお勧めしています。その例外としては、複数の MySQL インスタンスを 1 台のサーバホストにインストールするあるいはサーバ設定の完全な管理を希望する熟練したユーザーでです。

2.3.3. MySQL インストール ウイザードを使用する

2.3.3.1. インストール ウイザードへようこそ

MySQL インストール ウイザードは Microsoft 社の Windows 用に最新のインストール テクノロジを使用した MySQL サーバのインストーラです。MySQL インストール ウイザードと MySQL 設定ウイザードを一緒に用いることによって、ユーザーが MySQL サーバをインストール・設定したら直ぐに使用できます。

MySQL インストール ウイザードは MySQL サーバディストリビューション用の標準にインストーラで、バージョン 4.1.5 およびそれ以降があります。MySQL の以前のバージョンを使用しているユーザーはコンピュータをシャットダウンし、既存の MySQL を手動でアンインストールしてから MySQL を MySQL インストール ウイザードでインストールする必要があります。以前のバージョンからのアップグレードに関する詳細は、項2.3.3.7. 「インストール ウイザードによる MySQL のアップグレード」 を参照してください。

Microsoft 社は Microsoft Windows Installer (MSI) の改善版を Windows の最新機種に使用しています。MSI は Windows 2000、Windows XP、および Windows Server 2003 のアプリケーション インストールの事実上の標準です。MySQL インストール ウイザードはこのテクノロジを活用することでスムーズでさらに柔軟なインストール プロセスを提供しています。

Microsoft Windows インストール エンジンは Windows XP のリリース時に更新されています。旧バージョンの Windows を使用ユーザーは this Microsoft Knowledge Base article をご覧頂ければ最新の Windows インストーラ エンジンへのアップグレード情報を得ることがでます。

さらに、Microsoft 社は最近 WiX (Windows Installer XML) ツールキットをリリースしました。これが Microsoft 社の最初のオープン ソース プロジェクトです。弊社では WiX がオープン ソース で完全な Windows インストール プロセスをスクリプトを使用して柔軟にできるため Wix に切り換えました。

MySQL インストール ウイザードをお客様のようなユーザーのサポートとフェードバックによる改善します。。お客様にとって重要な機能が MySQL インストール ウイザードに欠けている場合、あるいはバグを見つけた場合には、項1.7. 「質問またはバグの報告」 の説明に従ってそれを弊社のバグ データベースまでご連絡お願いします。

2.3.3.2. MySQL インストール ウイザードのダウンロードおよび起動

MySQL のインストール パッケージは http://dev.mysql.com/downloads/ からダウンロードできます。ダウンロードするパッケージが Zip のアーカイブにある場合には、最初にアーカイブを取り出す必要があります。

ウイザードと起動するプロセスはダウンロードしたインストール パッケージの中身に因ります。setup.exe ファイルがある場合、それをダブル クリックしてインストール プロセスを開始します。.msi ファイルがある場合、それをダブル クリックしてインストール プロセスを開始します。

2.3.3.3. インストールの種類の選択

インストールの方法は 3 種類あります。標準完全、、およびカスタム の 3 種類です。

標準 のインストールでは MySQL サーバ、mysql コマンドライン クライアント、およびコマンドライン ユーティリティをインストールします。コマンドライン クライアントおよびユーティリティには mysqldumpmyisamchk、および MySQL サーバを管理するいくつかのツールが含まれています。

完全 なインストールはインストール パッケージに含まれるすべてのコンポーネントをインストールします。完全なインストールパッケージには埋め込みサーバ ライブラリ、ベンチマーク スイート、サポート スクリプト、および説明書が含まれています。

カスタム のインストールではインスロールするパッケージおよび使用するインストール パスなどを選択できます。詳細およびカスタムのインストールを実施するには、項2.3.3.4. 「カスタムのインストール ダイアログ」 を参照してください。

標準および完全のインストールを選択して Next ボタンをクリックすると、選択の確認画面が表示されインストールを開始します。カスタムのインストールを選択して Next ボタンをクリックすると、項2.3.3.4. 「カスタムのインストール ダイアログ」 で説明したカスタムのインストール ダイアログが表示されます。

2.3.3.4. カスタムのインストール ダイアログ

MySQL インストール ウイザードに含まれるインストールのパスあるいは特定のコンポーネントを変更する場合には、カスタムインストールを選択します。

カスタム インストール ダイアログの左側のツリー表示に利用できるすべてのコンポーネントが表示されます。インストールしなかったコンポーネントには赤の X アイコン、インストールしたコンポーネントには灰色のアイコンが付きます。インストールするコンポーネントを変更するには、そのコンポーネントのアイコンをクリックし、表示されているドロップダウンリストからインストールするアイコンを選択します。

デフォルトのインストール パスを Change... ボタンをクリックして希望するインストールするパスに変更します。

インストールするコンポーネントとインストール パスを選択したら、Next ボタンをクリックすると選択の確認のダイアログが表示されます。

2.3.3.5. 選択確認のダイアログ

インストールの種類とオプションのコンポーネントを選択すると、選択確認のダイアログが表示されます。選択を確認するための選択したインストールの種類とインストールのパスがダイアログに表示されます。

選択した設定に間違いない場合、Install ボタンをクリックすると MySQL のインストールが開始されます。設定を変更するには、Back ボタンをクリックします。MySQL をインストールしないで MySQL インストール ウイザードを終了するには、Cancel ボタンをクリックします。

インストールが完了すると、MySQL のウェブサイトに登録するかどうか問われます。登録することによって forums.mysql.com の MySQL フォーラムに投稿したり、バグを bugs.mysql.com にレポートしたり、ニュースレターを購読できます。インストーラの最後の画面ではインストールの概要を表示し、MySQL 設定ウイザードの起動オプションを提供します。そこで設定ファイルを作成し、 MySQL のサービスをインストールし、セキュリティを設定します。

2.3.3.6. MySQL インストール ウイザードに変更

Install ボタンをクリックすると、MySQL インストール ウイザードがインストールを開始し、次項以降で説明する変更をお客様のシステムに加えます。

レジストリの変更

MySQL インストール ウイザードは標準的なインストールの状況で、HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB にある Windows レジストリ キーを作成します。

MySQL インストール ウイザードは MySQL Server 5.1 のようなインストールされる主なサーバのバージョン名でキーを作成します。それには 2 つの文字列の値、Location および Version が含まれます。Location 文字列にはインストール ディレクトリへのパスが含まれます。デフォルトのインストールでは C:\Program Files\MySQL\MySQL Server 5.1\ が含まれます。Version 文字列にはリリース番号が含まれます。例えば、MySQL Server 5.1.15-beta のインストールでは、そのキーには 5.1.15-beta の値が含まれます。

これらのレジストリ キーは外部のツールに MySQL サーバのインストール場所を認識させるので、MySQL server のインストール パスを決定するためのハードディスクの完全スキャンをしなくて済みます。レジストリ キーはサーバの起動には必要ありません。MySQL を noinstall Zip アーカイブを使用してインストールすると、レジストリ キーは作成されません。

スタート メニュに戻る

MySQL インストール ウイザードが一般的な MySQL メニューの下にインストールした MySQL の主なバージョンの名前で Windows のスタートメニューに新たにエントリを作成します。例えば、MySQL 5.1 をインストールすると、MySQL インストール ウイザードが MySQL サーバ5.1 の欄を スタートメニューに作成さします。

以下のエントリがスタートメニュー欄に作成されます。

  • MySQL コマンドライン クライアント:こらは mysql コマンドライン クライアントへのショウトカットで root ユーザーとして接続が設定されます。このショートカットは接続すると root ユーザーパスワード聞いてきます。

  • MySQL サーバインスタンス設定ウイザード:これは MySQL 設定ウイザードへのショートカットです。このショートカットで新たにインストールしたサーバ、あるいは既存のサーバを再設定します。

  • MySQL の説明資料:これは MySQL サーバのインストール ディレクトリにローカルで保存された MySQL サーバの説明資料へのリンクです。このオプションは MySQL サーバを基本インストール パッケージでインストールした場合には利用できません。

ファイルシステムへの変更

MySQL インストール ウイザードはデフォルトで MySQL 5.1 サーバを C:\Program Files\MySQL\MySQL Server 5.1 にインストールします。そこでは Program Files はお客様のシステムのアプリケーションのデフォルトのロケーションで、5.1 は MySQL サーバの中心となるバージョンです。これが MySQL サーバに推奨しているロケーションで、以前のデフォルトのロケーション C:\mysql を置き換えます。

デフォルトではすべての MySQL アプリケーションは共通のディレクトリ C:\Program Files\MySQL に保持され、Program Files は 客様の Windows にインストールした際のアプリケーション用デフォルトのロケーションです。開発マシンへの標準的なインストールは以下のようになります。

C:\Program Files\MySQL\MySQL Server 5.1
C:\Program Files\MySQL\MySQL Administrator 1.0
C:\Program Files\MySQL\MySQL Query Browser 1.0

これにより MySQL アプリケーションの特定にシステムでの管理と維持が用意になります。

2.3.3.7. インストール ウイザードによる MySQL のアップグレード

MySQL インストール ウイザードは MSI の機能を使用してサーバのアップグレードを自動的に行います。これにより以前のバージョンを手動でアンインストールすることなく新しいリリースをインストールできます。インストーラーは新しいバージョンをインストールする前に自動的にシャットダウンして以前のバージョンを削除します。

自動アップグレードは同じ大きな枝番と小さな枝番を持つバージョン番号でのインストールの際にのみ利用できます。例えば、MySQL 4.1.5 から MySQL 4.1.6 に自動的にアップグレードできますが、MySQL 5.0 から MySQL 5.1 へのアップグレードはできません。

項2.3.14. 「Windows を使用した MySQL をアップグレードする」 参照。

2.3.4. 設定ウイザードを使用する

2.3.4.1. 設定ウイザードへようこそ

MySQL 設定ウイザードは Windows 環境でサーバの設定プロセスを自動化します。MySQL 設定ウイザード一連の質問をお客様に問いかけた上ではカスタムの my.iniファイルを作成し、次にお客様の回等をテンプレートに反映してインストールに使用する my.ini ファイルを作成します。

MySQL 設定ウイザードは MySQL 5.1 サーバに含まれており、現在は Windows のユーザーのみ利用できます。

MySQL 設定ウイザードの大部分は MySQL AB に多くのユーザーがここ数年もたらしてくれたフィードバックに結果です。それでも尚、お客様にとって重要な機能が欠けている場合にば、項1.7. 「質問またはバグの報告」 で説明した手順に従ってそれをバグ データベースにレポートお願いします。

2.3.4.2. MySQL 設定ウイザード起動

MySQL 設定ウイザードは一般的には MySQL インストール ウイザードがインストールされている場合 MySQL インストール ウイザードから起動します。また、MySQL 設定ウイザードを Windows の スタート メニューのMySQL 欄にあるMySQL Server Instance Config Wizard のエントリをクリックすると起動できます。

あるいは、MySQL インストールの bin ディレクトリをナビゲートして MySQLInstanceConfig.exe ファイルのディレクトリから直接起動できます。

2.3.4.3. メンテナンス オプションの選択

MySQL 設定ウイザードが既存の my.ini ファイルを検知した場合、お客様の既存のサーバを再設定するか、あるいは my.ini ファイルを削除してサーバインスタンスを削除し MySQL のサービスを停止して削除します。

既存のサーバを再設定するには、再設定インスタンスオプションを選択して Next ボタンをクリックします。既存の my.ini ファイル名が mytimestamp.ini.bak に変わり、その timestamp が既存の my.ini ファイルが作成された日時です。既存のサーバ インスタンスを削除するには、インスタンスの削除オプションを選択し Next ボタンをクリックします。

インスタンスの削除オプションを選択すると確認ウインドウが表示されます。Execute ボタンをクリックします。MySQL 設定ウイザードが停止して MySQL サービスを削除し、次に my.ini ファイルを削除します。サーバのインストールおよびその data フォルダは削除されません。

再設定インスタンスオプションを選択すると、設定タイプ のダイアログが表示されるので、そこで設定するインストールのタイプを選択します。

2.3.4.4. 設定タイプの選択

MySQL 設定ウイザードを新規の MySQL インストールに起動する、あるいは 再設定インスタンスオプションを既存のインストールに選択すると、設定タイプ のダイアログが表示されます。

選定タイプは 2種類あります。詳細設定 および 標準設定 の 2 種類です。標準設定オプションは新規のユーザーがサーバの設定を変更しないで MySQL を直ぐに起動する場合に適しています。詳細設定オプションは熟練したユーザー用でサーバの設定を細かく設定する場合に適しています。

MySQL を初めて使用されるユーザーで単一ユーザーの開発マシンとしての設定が必要な場合には、標準設定で十分です。標準設定オプションを選択するとサービス オプションおよびセキュリティ オプションを除くすべての設定オプションを MySQL 設定ウイザードが自動的に設定します。

標準設定は既存の MySQL がインストールされている場合にシステムに互換がないオプションを設定します。システムに設定するインストール以外に既存の MySQL をインストールしている場合、詳細設定オプションをお勧めします。

標準設定 を完了するには、それぞれ 項2.3.4.11. 「サービス オプション ダイアログ」 および 項2.3.4.12. 「セキュリティ オプション ダイアログ」サービス オプション並びにセキュリティ オプション の項を参照してください。

2.3.4.5. サーバタイプのダイアログ

選択可能な異なる 3 種類のサーバタイプがあります。選択するサーバの種類によって MySQL 設定ウイザードのメモリ、ディスク、および使用しているプロセッサに関する決定に影響を与えます。

  • 開発用マシン:MySQL を個人の使用目的のみに使用する場合には、一般的なディストップのワークステーション用としてこのオプションを選択します。他の多くのディスクトップのアプリケーションが実行されているものと想定します。MySQL サーバは最低限のシステム リソース向けに設定されます。

  • サーバ マシン:MySQL サーバが FTP、Eメール、およびウェブ サービスなど他のサーバアプリケーションと一緒に動作しているサーバ マシンにはこのオプションを選択します。MySQL サーバはシステム リソースの平均的な部分を使用するものとして設定されます。

  • 専用 MySQL サーバ マシン:MySQL サーバのみを運用するサーバ マシンにはこのオプションを選択します。他のアプリケーションを実行していないことを想定した設定です。MySQL サーバは利用できるすべてのシステム リソースを使用する設定になります。

注意

前もって設定された設定を選択すると、お客様の my.cnf あるいは my.ini の様々なオプションの値や設定がそれぞれ変更されます。ですから、参照マニュアルで説明したデフォルトの値やオプションは設定ウイザードの実行中に作成されたオプションや値と異なる場合があります。

2.3.4.6. データベースの使用ダイアログ

データベース利用 ダイアログは MySQL のテーブルを作成する際に使用するストレージ エンジンを表示します。選択したオプションによって InnoDB ストレージ エンジンを利用できるか、何パーセントのサーバ リソースが InnoDB に利用できるかを決定します。

  • 多機能データベース:このオプションは InnoDB および MyISAM ストレージ エンジン両方を有効にしリソースを両方に等分します。このオプションは両方のストレージ エンジンを定期的に使用するユーザーにお勧めします。

  • トランザクション データベースのみ:このオプションは InnoDB および MyISAM ストレージ エンジンの両方を有効にしますが、殆どのサーバ リソースは InnoDB ストレージ エンジンが使用します。このオプションは InnoDB を中心に使用し MyISAM は最低限使用するユーザーに適しています。

  • 非-トランザクション データベースのみ:このオプションは InnoDB ストレージ エンジンを完全に無効にしすべてのサーバ リソースは MyISAM ストレージ エンジンが使用します。このオプションは InnoDB を使用しないユーザーにお勧めです。

2.3.4.7. InnoDB テーブルスペース ダイアログ

ユーザーの中には InnoDB テーブルスペース ファイルを MySQL サーバのデータディレクトリではなく異なるロケーションに配置することを希望するユーザーもいます。テーブルスペース ファイルの個別のロケーションへの配置はお客様のシステムが高容量あるいは RAID ストレージ エンジンのような高パフォーマンスのストレージ デバイスを利用できる場合に適しています。

InnoDB テーブルスペース ファイルのロケーションを変更するには、ドライブ レターのドロップダウン リストから新しいドライブを選択し、パスのドロップダウン リストから新しいパスを選択します。カスタムのパスを作成するには、 ... ボタンをクリックします。

既存のサーバの設定を変更するには、パスを変更する前に Modify ボタンをクリックします。この状況ではサーバを起動する前に既存のテーブルスペース ファイルを新しいロケーションに手動で移動する必要があります。

2.3.4.8. 同時接続ダイアログ

サーバのリソースが不足しないようにするために、確立できる MySQL サーバへの同時接続数を制限することが重要です。同時接続ダイアログでサーバの設定を任意に選択し、同時接続数の制限を設定できます。同接続の制限を手動で設定することも出来ます。

  • デシジョン サポート (DSS)/OLAP:サーバが多数の同時接続を必要としない場合にこのオプションを選択します。接続の最大数を 100 に設定し、平均の 20 の同時接続を想定します。

  • オンライン トランザクション プロセスシング (OLTP):サーバが多数の同時接続を必要とする場合にこのオプションを選択します。同時接続の最大数を 500 に設定します。

  • 手動の設定:サーバへの最大の同時接続数を手動で設定する場合にこのオプションを設定します。表示されたドロップダウン ボックスから任意の接続数を選択するか、任意の接続数が無い場合は最大の接続数をドロップダウン ボックスに入力します。

2.3.4.9. ネットワークおよび厳格なモード オプション ダイアログ

ネットワーク オプション ダイアログを使用して TCP/IP ネットワークを有効/無効にし、MySQL サーバの接続に使用するポート番号を設定します。

TCP/IP ネットワークはデフォルトで有効になっています。TCP/IP ネットワークを無効にするには、TCP/IP ネットワーク オプションの隣にあるボックスのチェックを外します。

デフォルトでは Port 3306 を使用しています。MySQL の接続に使用するポートを変更するには、ドロップダウン ボックスから新しいポート番号を選択するか、ドロップダウン ボックスに直接ポート番号を入力します。ポート番号を選択すると、そのポート番号の選択を確認するプロンプトが表示されます。

サーバを SQL モードに設定して厳格モードを有効あるいは無効にします。厳格モード (デフォルト) に設定する MySQL が他のデータベース管理システムと同様の振る舞いをします。アプリケーションを MySQL の旧式の 「許容」 な振る舞いで動作させるには、それらのアプリケーションを使用するかあるいは厳格モードを無効にします。厳格モードの詳細については、項4.2.6. 「SQL モード」 を参照してください。

2.3.4.10. 文字セット ダイアログ

MySQL サーバは複数の文字セットをサポートしています。オーバーライドを除いてすべてのテーブル、カラム、およびデータベースに適用されるデフォルトのサーバ文字セットに設定できます。MySQL サーバのデフォルトの文字セットを変更するには文字セット のダイアログを使用します。

  • 標準の文字セット:latin1 をデフォルトのサーバ文字セットとして使用するにはこのオプションを選択します。latin1 は英語および多くの西部ヨーロッパ言語して使用されています。

  • 多言語のベスト サポート:utf8 をデフォルトのサーバ文字セットとして使用する場合このオプションを選択します。これはユニコードの文字セットで多くの異なる言語の文字を保持できます。

  • 手動選択のデフォルトの文字セット/照合:サーバのデフォルトの文字セットを手動で選択するにはこのオプションを選択します。任意の文字セットを表示されたドロップダウン リストから選択します。

2.3.4.11. サービス オプション ダイアログ

Windows の NT-ベースのプラットフォームでは、MySQL サーバは Windows のサービスの一貫としてインストールできます。サービスでインストールした場合、MySQL サーバはシステムの起動時に自動的に起動されサービスの不具合時でも Windows を起動すると自動的に再起動します。

MySQL 設定ウイザードがサービス名 MySQL で MySQL サーバをデフォルトでインストールします。このサービスのインストールを望まない場合、Windows のサービスとしてインストールする のオプションの隣にあるボックスのチェックを外します。表示されたドロップダウン ボックスから新しいサービス名を選択するか、ドロップダウン ボックスに新しいサービス名を入力するとサービス名を変更できます。

MySQL サーバをサービスとしてインストールしても起動時の自動的な起動を望まない場合、MySQL サーバを自動的に起動する のオプションの隣にあるボックスのチェックを外します。

2.3.4.12. セキュリティ オプション ダイアログ

root パスワードを MySQL サーバに設定することを強くお勧めします。MySQL 設定ウイザードはデフォルトでその設定を要求します。root パスワードの設定を望まない場合、セキュリティの設定変更 オプションの隣にあるボックスのチェックを外します。

root パスワードを設定するには、任意のパスワードを 新しいルートパスワードおよび確認 のボックスに入力します。既存のサーバを再設定するには、既存の root パスワードを現在のルート パスワード ボックスに入力する必要があります。

ネットワーク上で他の人が root にログインできないようにするには、ルートはローカル ホストのみからアクセス可能 のオプションの隣にあるボックスにチェックを入れます。これにより root アカウントのセキュリティが強化されます。

匿名のユーザーアカウントを作成するには、匿名のアカウントを作成する のオプションの隣にあるボックスにチェックを入れます。匿名のアカウントを作成するとサーバのセキュリティが脆弱になり、ログインおよび許可において困難が伴います。このため、匿名のアカウントはお勧めできません。

2.3.4.13. 選択確認のダイアログ

MySQL 設定ウイザードの最後のダイアログは 確認ダイアログ です。設定プロセスを実行するには、Execute ボタンをクリックします。前のダイアログに戻るには、Back ボタンをクリックします。MySQL 設定ウイザードをサーバを設定しないで終了するには、Cancel ボタンをクリックします。

Execute ボタンをクリックすると、MySQL 設定ウイザードが一連のタスクを実行しタスクの実行に応じて進捗状況を画面に表示します。

MySQL 設定ウイザードは MySQL の開発者やエンジニアが用意したテンプレートを使用してお客様の選択に基づいて最初に設定ファイル のオプションを決定します。このテンプレート名は my-template.ini でサーバのインストール ディレクトリにあります。

MySQL 設定ウイザードは次にこれらのオプションを my.ini ファイルに書き込みます。my.ini ファイルの最後のロケーションは Write configuration file タスクの隣に表示されます。

MySQL サーバのサービスの作成を選択すと、MySQL 設定ウイザードがサービスを作成して開始します。既存のサービスを再設定すると、MySQL 設定ウイザードがサービスを再起動して設定変更に適用します。

root パスワードの設定を選択すると、MySQL 設定ウイザードがサーバに接続し、新しい root パスワードを設定して選択した他のセキュリティの設定に適用します。

MySQL 設定ウイザードがタスクを完了すると、その概要が表示されます。MySQL 設定ウイザードを終了するには Finish ボタンをクリックします。

2.3.4.14. my.ini ファイルのロケーション

MySQL 設定ウイザードが my.ini ファイルを MySQL サーバのインストール ディレクトリに配置します。これにより設定ファイルを特定のサーバインスタンスに関連付けます。

MySQL サーバの my.ini ファイルのロケーションの確認に、このファイル名に類似した引数をサービス インストールの一貫として MySQL サーバに渡します。

--defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini"

ここでは、C:\Program Files\MySQL\MySQL Server 5.1 が MySQL サーバへのインストール パスに置き換えられます。--defaults-file オプションが起動時に MySQL サーバに設定オプションに指定したファイルを読み込ませます。

2.3.4.15. my.ini ファイルの編集

my.ini ファイルを変更するには、そのファイルをテキスト エディタで開いて必要な変更を加えます。サーバの設定も http://www.mysql.com/products/administrator/ ユーティティで変更できます。

mysql および mysqldump コマンドラインクライアントなどの MySQL クライアントおよびユーティリティはサーバのインストール ディレクトリにある my.ini ファイルのを見つけることはできません。クライアントおよびユーティリティのアプリケーションを設定するには、新しい my.ini ファイルを C:\WINDOWS あるいは C:\WINNT ディレクトリ (お客様の Windows のバージョンに適したいずれか) に作成します。

2.3.5. 非インストール Zip アーカイブからのインストール

非インストール パッケージからインストールするユーザーは手動で MySQL をインストールする際ここの項の説明を使用します。MySQL を Zip アーカイブからインストールするには以下の手順に従います。

  1. アーカイブを任意のインストール ディレクトリに取り出す

  2. 空のファイルを作成する

  3. MySQL のサーバタイプを選択する

  4. MySQL サーバを起動する

  5. デフォルトのユーザーアカウントを確認する

このプロセスはこの後の項で説明します。

2.3.6. インストール アーカイブを取り出す

MySQL を手動でインストールするには、以下の手順に従います。

  1. 以前のバージョンからアップグレードする場合にはアップグレードを始める前に 項2.3.14. 「Windows を使用した MySQL をアップグレードする」 を参照してください。

  2. Windows NT、Windows 2000、Windows XP、あるいは Windows Server 2003 などの Windows NT-ベースのオペレーティング システムを使用している場合には、管理者権限のユーザーとしてログインする必要があります。

  3. インストールのロケーションを選択します。従来、MySQL サーバは C:\mysql にインストールされます。MySQL インストール ウイザードが MySQL を C:\Program Files\MySQL にインストールします。MySQL を C:\mysql にインストールしない場合、起動時あるいはオープン ファイルでインストール ディレクトリへのパスを指定する必要があります。項2.3.7. 「オプション ファイルの作成」 参照。

  4. 任意の Zip アーカイブ ツールを使用してインストールするアーカイブを選択したインストールのロケーションに取り出します。ツールによっては選択したインストール ロケーションのフォルダにアーカイブを取り出します。取り出したら、そのサブフォルダの中身を選択したインストール ロケーションに移動できます。

2.3.7. オプション ファイルの作成

サーバの起動時に起動オプションを指定する必要がある場合には、それらをコマンドラインで指示するかあるいはそれらをオープン ファイルに配置します。サーバの起動時に常に使用するオプションは、オープン ファイルを使用して MySQL の設定を指定すると一番便利です。これは以下の環境で特に便利です。

  • インストールのロケーションあるいはデータ ディレクトリのロケーションはデフォルトのロケーション (C:\Program Files\MySQL\MySQL Server 5.1 あるいは C:\Program Files\MySQL\MySQL Server 5.1\data) とは異なります。

  • サーバの設定を調整する必要があります。

MySQL サーバが Windows で起動すると 2 つのファイルでオプションを探します。Windows のディレクトリの my.ini ファイル、および C:\my.cnf ファイルです。Windows のディレクトリは一般的には C:\WINDOWS あるいは C:\WINNT のような名前で命名されます。以下のコマンドを使用して WINDIR 環境変数の値から正確なロケーションを割り出すことができます。

C:\> echo %WINDIR%

MySQL は最初に my.ini ファイルでオプションを探し、次に my.cnf ファイルで探します。しかし、混乱を避けるためにはファイルを 1 つだけ使用するほうが良いでしょう。お客様の PC がブート ローダーを使用している場合C:はブート ドライブではないので、my.ini ファイルしか使用できません。どちらのファイルにしろ、それらは一般的なテキスト ファイルになります。

MySQL ディストリビューションに含まれている参考例のオプション ファイルを使用することもできます。詳細は 項3.3.2.1. 「あらかじめ形成されたオプション・ファイル」 を参照してください。

オプション ファイルはノートパッドなどのテキスト エディタで作成したり変更できます。例えば、MySQL を E:\mysql にインストールしデータ ディレクトリが E:\mydata\data にある場合、[mysqld] セクションを含むオプション ファイルを作成して basedir および datadir パラメータの値を指定できます。

[mysqld]
# set basedir to your installation path
basedir=E:/mysql
# set datadir to the location of your data directory
datadir=E:/mydata/data

Windows のパラメータはオプション ファイルでバックスラッシュではなくスラッシュ (前向き)を使用して指定されていますのでその点ご留意ください。バックスラッシュを使用する際は 2 重のバックスラッシュを使用する必要があります。

[mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data

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

Windows では、MySQL インストーラによってデータ ディレクトリはお客様が MySQL をインストールしたディレクトリに配置されます。データ ディレクトリを異なるロケーションで使用したい場合、data ディレクトリのコンテンツ全体を新しいロケーションにコピーする必要があります。例えば、MySQL が C:\Program Files\MySQL\MySQL Server 5.1 にインストールされている場合、デフォルトのデータ ディレクトリは C:\Program Files\MySQL\MySQL Server 5.1\data にあります。代わりに E:\mydata をデータ ディレクトリとして使用する場合、以下の 2 つを行う必要があります。

  1. data ディレクトリ全体およびそのすべてのコンテンツを C:\Program Files\MySQL\MySQL Server 5.1\data から E:\mydata へ移動します。

  2. サーバの起動時に常に新しいデータ ディレクトリのロケーションを指定するには --datadir オプションを使用します。

2.3.8. MySQL サーバ タイプの選択

以下の表は Windows 上の MySQL 5.1 で使用できるサーバを示したものです。

バイナリ説明
mysqld-debugフルのデバッグおよび自動メモリ割り当てチェックによるコンパイル、および InnoDB サポート。
mysqldバイナリの InnoDB サポートによる最適化。
mysqld-nt指定パイプのサポートによる Windows NT、2000 および XP へのバイナリの最適化

以前のバイナリはすべて最新の Intel プロセッサに最適化されていますが、Intel i386-クラスあるいはそれ以上で動作する必要があります。

Windows 用のすべてのMySQL 5.1 サーバはデータベース ディレクトリのシンボリック リンキングをサポートしています。

MySQL はすべての Windows プラットフォームで TCP/IP をサポートしています。platforms.mysqld-nt サーバは Windows NT、2000、XP、および 2003 上の名前付きパイプをサポートしています。しかし、デフォルトではプラットフォーに関係なく TCP/IP を使用します。(名前付きパイプは多くの Windows 設定では TCP/IP より低速です。)

名前付きパイプの使用は以下の条件に因ります。

  • 名前付きパイプはサーバを --enable-named-pipe オプションで起動したときのみ有効です。いくつかのユーザーが名前付きパイプを使用した際に MySQL サーバがシャットダウンする問題がありましたので、このオプションは明示的に使用する必要があります。

  • 名前付きパイプの接続は mysqld-nt サーバにのみ可能で、サーバが名前付きパイプをサポートしている Windows のバージョン (NT、2000、XP、2003) で動作している時のみ使用できます。

  • これらのサーバは Windows 98 あるいは Me でも動作しますが、TCP/IP がインストールされている時のみで、名前付き接続は使用できません。

  • これらのサーバは Windows 95 では動作しません。

:このマニュアルの殆どの例では mysqld をサーバ名として使用しています。mysqld-nt などの別のサーバを使用する場合には、例示のようにコマンドで適切な変更を加えます。

2.3.9. サーバを最初に起動する

この項では MySQL サーバの起動に関する一般的な概要を説明します。以下の数項では MySQL サーバのコマンドラインあるいは Windows のサービスとしての起動に特化した情報を提供します。

ここでは MySQL を Noinstall バージョンを使用してインストールした場合、あるいは MySQL を GUI ツールを使用しないで手動で設定してテストする場合に関する情報を提供します。

以下の例では MySQL をデフォルトのロケーション C:\Program Files\MySQL\MySQL Server 5.1 にインストールしたものとして説明します。異なるロケーションに MySQL をインストールしている場合には例示のパス名を変更します。

Windows NT、2000、XP、あるいは 2003 などの NT-ベースのシステムでは、クライアントには 2 つのオプションがあります。それらは TCP/IP を使用し、サーバが名前付きパイプの接続をサポートしている場合には名前付きパイプも使用できます。MySQL で TCP/IP を Windows NT 4 で使用する場合、サービス パック 3 (あるいはそれ以降) をインストールする必要があります。

Windows 95、98、あるいは Me 上では、MySQL クライアントは常に TCP/IP を使用したサーバに接続します。(これによりネットワークのどのマシンでもお客様の MySQL サーバに接続します。.)この理由により、 MySQL を起動する前にお客様のマシンに TCP/IP のサポートがインストールされているか確認する必要があります。TCP/IP は Windows CD-ROM にあります。

旧 Windows 95 リリース (例えば、OSR2) を使用している場合、旧 Winsock を使用している可能性があります。MySQL には Winsock 2 が必要です。最新版の Winsock は http://www.microsoft.com/ で入手できます。Windows 98 は新しい Winsock 2 ライブラリを使用していますので、ライブラリを更新する必要はありません。

サーバを --shared-memory オプションで起動した場合、Windows 上の MySQL は共有メモリの接続もサポートします。クライアントは --protocol=memory オプションを使用して共有メモリで接続できます。

どのサーババイナリを実行するかについては、項2.3.8. 「MySQL サーバ タイプの選択」 を参照してください。

テストはコンソール ウインドウ (あるいは 「DOS ウインドウ」) のコマンド プロンプトで行います。このようにウインドウにサーバの状況に関するメッセージが表示されますので状況を用意に確認できます。設定に何か問題があった場合には、これらのメッセージで問題を特定して修正できます。

サーバを起動するには、以下のコマンドを入力します。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --console

InnoDB サポートを含むサーバでは、以下のメッセージに類似したメッセージがサーバの起動時に表示されます (パラメータをサイズは異なる場合があります)。

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started

サーバが起動シーケンスを終了すると、以下のようなメッセージが表示されます。このメッセージが表示されるとサーバがクライアント接続の用意が整ったことを意味します。

mysqld: ready for connections
Version: '5.1.15-beta'  socket: ''  port: 3306

サーバは生成する分析に関する出力をコンソールに書き続けます。クライアント プログラムを実行する新しいコンソール ウインドウを開くことができます。

--console オプションを削除すると、サーバは分析の出力をデータ ディレクトリ (C:\Program Files\MySQL\MySQL Server 5.1\data デフォルト) のエラーログに書き込みます。エラーログは .err 拡張付きのファイルです。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

2.3.10. MySQL の Windows のコマンドラインからの起動

MySQL さーばーはコマンドラインから手動で起動できます。この起動は Windows のどのバージョンでもできます。

コマンドラインから mysqld サーバを起動するには、コンソール ウインドウ (あるいは 「DOS ウインドウ」) を開け、以下のコマンドを入力します。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"

mysqld へのパスはお客様のシステムの MySQL のインストール ケーションによって異なる場合があります。

NT バージョン以外の Windows 上では、このコマンドはバックグランドで mysqld を起動します。つまり、サーバの起動後に別のコマンド プロンプトが表示されます。サーバをこのように Windows NT、2000、XP、あるいは 2003 上で起動すると、サーバはフォアグラウンド (前景) で起動しそのサーバが動作している間はコマンド プロンプトは表示されません。このため、そのサーバが動作している間は別のコンソール ウインドウを開けてクライアント プログラムを実行する必要があります。

MySQL サーバを停止するには以下のコマンドを実行します。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown

:MySQL の root ユーザーアカウントにパスワードが設定されている場合、mysqladmin-p オプションで実行し、プロンプトが表示されたらパスワードを入力します。

このコマンドは MySQL 管理ユーティリティ mysqladmin を実行してサーバに接続し、サーバをシャットダウンします。そのコマンドは MySQL に root ユーザーとして接続します。それは MySQL のグラント システムのデフォルトの管理アカウントです。MySQL のグラント システムのユーザーは Windows のログイン ユーザーとは全く別のものです。

mysqld が起動しない場合、エラーログを確認してその問題に関するメッセージが無いか確認します。そのエラーは C:\Program Files\MySQL\MySQL Server 5.1\data ディレクトリにあります。それは接尾辞 .err のファイルです。サーバを mysqld --console として起動することもできます。この場合、表示された画面で問題を解決するために役に立つ情報が得られる場合もあります。

最後のオプションは mysqld--standalone および --debug オプションで起動すとことです。この場合、mysqld がログ ファイル C:\mysqld.trace を書き、その中に mysqld が起動しない理由が含まれています。Creating Trace Files 参照。

mysqld --verbose --help を使用して mysqld に関連したすべてのオプションを表示します。

2.3.11. Windows のサービスとして MySQL を起動する

NT ファミリー (Windows NT、2000、XP、2003) を使用する場合、MySQL を Windows のサービスとしてインストールることをお勧めします。サービスでインストールすると Windows の起動および停止と共に MySQL を自動的に起動、停止できます。MySQL サーバをサービスとしてインストールすると NET コマンドを使用してコマンドラインから、あるいはグラフィカル Services ユーティリティで管理することもできます。

Services ユーティリティ (Windows Service Control Manager) は Windows のコントロール パネル (Windows 2000、XP、および Server 2003 の 管理ツール に) にあります。衝突を避けるために、サーバのインストールの際にServiceユーティリティを閉じるか、またはコマンドラインからオペレーションを削除するようお願いします。

MySQL を Windows のサービスとしてインストールする前に、現在のサーバが以下のコマンドを使用している場合には最初に現在のサーバを停止する必要があります。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown

:MySQL の root ユーザーアカウントにパスワードが設定されている場合、mysqladmin-p オプションで実行し、プロンプトが表示されたらパスワードを入力します。

このコマンドは MySQL 管理ユーティリティ mysqladmin を実行してサーバに接続し、サーバをシャットダウンします。そのコマンドは MySQL に root ユーザーとして接続します。それは MySQL のグラント システムのデフォルトの管理アカウントです。MySQL のグラント システムのユーザーは Windows のログイン ユーザーとは全く別のものです。

サーバをこのコマンドを使用してサービスとしてインストールします。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install

サービスのインストール コマンドはサーバは起動しません。その件は後ほどこの項で説明します。

MySQL プログラムを容易に実行するには、MySQL bin ディレクトリのパス名を Windows システムの PATH 環境変数に追加します。

  • Windows のデスクトップで マイ コンピュータ アイコンを右クリックし、プロパティを選択します。

  • 次に 高度 タブを表示されたシステムのプロパティメニューから選択し、 Environment Variables ボタンをクリックします。

  • System Variables で、パス を選択し、次に Edit ボタンをクリックします。システム変数の編集のダイアログが表示されます。

  • カーソルを Variable Value の印のついたスペースに表示されたテキストの最後に持って行きます。(カーソルがそのスペースのテキストの一番後ろにあることを確認するには 終了 キーを使用します。)次にお客様の MySQL bin ディレクトリの完全なパス名 (例えば、C:\Program Files\MySQL\MySQL Server 5.1\bin) を入力します。このパス名の行にはパス名を他の値から分けるためのセミコロンを使用していることにご留意ください。OK をクリックして表示されているすべてのダイアログを順番に消します。この段階でシステムのどのディレクトリからでも DOS プロンプトに MySQL の実行プログラム名を入力してすべての My SQL 実行プログラムを呼び出すことができます。この実行プログラムにはサーバ、mysql クライアント、および mysqladmin 並びに mysqldump などのすべての MySQL コマンドライン ユーティリティが含まれています。

    同じマシンで複数の MySQL サーバを動作させている場合には MySQL bin ディレクトリを Windows PATH に追加することはできません。

警告:システム PATH を手動で編集する際には最大限の注意が必要です。既存の PATH の値の一部でも間違って削除したりあるいは変更したりすると誤動作を引き起こしたりあるいはシステムが使用できなくなったりする場合があります。

サービスをインストールする際に以下の引数を MySQL 5.1 で使用できます。

  • --install オプションの後に直ぐにサービス名を指定できます。デフォルトのサービス名は MySQL です。

  • サービス名を入力すると、一つのオプションで操作できます。操作手順では、--defaults-file=file_name でオプションのファイル名を指定し、そこでサーバが起動時にオプションを読み込みます。

    --defaults-file 以外の一つのオプションを使用できますが、あまりお勧めできません。--defaults-file は名前付けオプション ファイルにサーバの複数の起動オプションを指定できるのでさらに柔軟です。

  • サービス名の後に --local-service オプションも指定できます。これによりサーバをシステム権限の制限付き LocalService Windows アカウントを使用して起動できます。このアカウントは Windows XP あるいはそれ以降のみ利用できます。--defaults-file および --local-service は両方ともサービス名の後に続きます。順序は帰られます。

MySQL サーバを Windows のサービスでインストールした場合、サーバが使用するサービス名およびオプション ファイルは以下の規則で決められます。

  • サービス インストールのコマンドがサービス名あるいはデフォルトのサービス名 (MySQL) を --install オプションの後に指定しない場合、サーバは MySQL のサービス名を使用し、標準のオプション ファイルの [mysqld] グループのオプションを読み込みます。

  • サービス インストールのコマンドが MySQL 以外のサービス名を --install オプションの後に指定して場合、サーバはそのサービス名を使用します。サービスとして同じ名前を持つグループからオプションを読み込み、標準のオプション ファイルからオプションを読み込みます。

    サーバはまた標準のオプション ファイルの [mysqld] グループからオプションを読み込みます。これによりすべての MySQL サービスで使用されるオプション、およびそのサービス名でインストールしたサーバがサービスとして同じ名前を持つオプション ション グループに [mysqld] グループを使用できます。

  • サービス インストールのコマンドがサービス名の後に --defaults-file オプションを指定すると、サーバは名前付けファイルの [mysqld] グループのオプションのみを読み込み、標準のオプション ファイルは無視します。

さらに複雑な例として、以下のコマンドがあります。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf

ここでは、デフォルトのサービス名 (MySQL) は --install オプションの後に表示されます。--defaults-file オプションが指定されない場合、このコマンドよりサーバが標準のオプション ファイルから [mysqld] グループを読み込みます。しかし、--defaults-file オプションが指定されているので、サーバは [mysqld] オプション グループのオプションを、名前付けファイルのみから読み込みます。

MySQL サービスを実行する前に Windows の Services ユーティリティでスタート パラメータとしてオプションを指定すとこともできます。

MySQL サーバをサービスとしてインストールすると、Windows が起動されるたびにサービスが自動的に実行されます。サービスを Services ユーティリティで、あるいは NET START MySQL コマンドを使用して直ぐに実行することもできます。NET コマンドはケースセンシティブではありません。

サービスとして起動する場合、mysqld はコンソール ウインドウにアクセスしないのでメッセージは表示されません。mysqld が起動しない場合、エラーログにサーバが記載したその問題の原因を知らせるメッセージがないか確認します。エラーログは MySQL データ ディレクトリ (例えば、C:\Program Files\MySQL\MySQL Server 5.1\data) にあります。.そのファイルは .err の接尾辞が付いたファイルです。

MySQL サーバをサービスとしてインストールして、サービスを実行しているときに、Windows がシャットダウンすると Windows が自動的にサービスを停止します。そのサーバを Services ユーティリティ、NET STOP MySQL コマンド、あるいは mysqladmin shutdown コマンドを使用して手動で停止することもできます。

サービスがブート プロセスで自動的に実行されないようにサーバをマニュアル サービスとしてインストールすることもできます。これには --install オプションではなく --instal-manuall オプションを使用します。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install-manual

サービスとしてインストールしたサーバを削除するには、起動中の場合にはそれを最初に NET STOP MySQL を実行して停止します。次に --remove オプションを使用してそれを削除します。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --remove

mysqld をサービスで稼動させていない場合は、コマンドラインでそれを起動できます。その手順は、項2.3.10. 「MySQL の Windows のコマンドラインからの起動」 を参照してください。

インスとレーションで問題があった場合には、項2.3.13. 「Windows への MySQL インストールにおけるトラブルシューティング」 を参照してください。

2.3.12. MySQL インストールのテスト

以下のコマンドのいずれかを実行して MySQL サーバが動作しているかテストできます。

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqlshow"
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqlshow" -u root mysql
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" version status proc
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql" test

mysqld のクライアント プログラムからTCP/IP 接続への反応が鈍い場合、それは多分お客様の DNS の問題です。この場合 mysqld--skip-name-resolve オプションで起動し localhost および MySQL許諾テーブルの Host カラムにある IP 番号のみを使用します。

MySQL クライアントに TCP/IP ではなく名前付けパイプ接続を使用するには --pipe あるいは --protocol=PIPE オプションを指定するか、あるいは .(ピリオド) をホスト名として指定すると使用できます。デフォルトのパイプ名を使用しない場合には --socket オプションを使用してパイプ名を指定します。

root アカウントにパスワードを設定したら、匿名のアカウントを削除し、あるいは新しいユーザーアカウントを作成し、次に適切な -u および -p オプションを上述のコマンドで使用して MySQL サーバに接続する必要があります。項4.7.4. 「MySQL サーバへの接続」 参照。

mysqlshow に関する詳細は、項7.15. 「mysqlshow — データベース、テーブル、カラム情報を表示します。」 を参照してください。

2.3.13. Windows への MySQL インストールにおけるトラブルシューティング

MySQL を最初にインストールして起動する際に、エラーが発生して MySQL サーバが起動できない場合があります。この項ではエラーが発生した場合の問題の分析方法およびエラーの修正について説明します。

サーバのトラブルシューティングに最初に使用するツールはエラーログです。MySQL サーバはサーバが起動しない原因となるエラーに関する情報を記録するエラーログを使用しています。エラーログはお客様が my.ini ファイルで指定したデータ ディレクトリにあります。デフォルトのデータ ディレクトリは C:\Program Files\MySQL\MySQL Server 5.1\data にあります。項4.11.2. 「エラー ログ」 参照。

エラーに関する別の情報源は MySQL サービスが実行された際に表示されるコンソール メッセージです。コマンドラインの NET START MySQL コマンドを mysqld をサービスとしてインストールした後に使用してサービスとしてのMySQL サーバの起動に関するエラーメッセージを表示します。項2.3.11. 「Windows のサービスとして MySQL を起動する」 参照。

以下の例は MySQL のインストールおよびサーバを最初に起動する際に発生する共通の問題のエラーメッセージを示したものです。

  • MySQL サーバが mysql 権限データベースあるいは重要なファイルを見つけられなかった場合、以下のメッセージが表示されます。

    System error 1067 has occurred.
    Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't exist
    

    これらのメッセージは MySQL のベース あるいはデータディレクトリがデフォルトのロケーション (それぞれ C:\Program Files\MySQL\MySQL Server 5.1 および C:\Program Files\MySQL\MySQL Server 5.1\data) のロケーションにインストールされた場合によく表示されます。

    この状況は MySQL がアップグレードされて新しいロケーションにインストールされたが、設定ファイルの新しいロケーション反映のための更新が行われていない場合に発生する場合があります。さらに、新旧の設定ファイルの衝突がエラーの原因になる場合もあります。MySQL をアップグレードする際は必ず旧設定ファイルを削除するか名前を変えでください。

    MySQL を C:\Program Files\MySQL\MySQL Server 5.1 以外のディレクトリにインストールした場合には、設定 (my.ini) ファイルを使用して MySQL サーバがこれを認識しているかどうか確認する必要があります。my.ini ファイルは Windows ディレクトリ、一般的には C:\WINDOWS あるいは C:\WINNT に配置される必要があります。コマンドプロンプトから以下のコマンドを発行して WINDIR 環境変数の値から正確なロケーションを割り出すことができます。

    C:\> echo %WINDIR%
    

    オプション ファイルはノートパッドなどのテキスト エディタで作成したり変更できます。例えば、MySQL を E:\mysql にインストールしデータ ディレクトリが D:\MySQLdata にある場合、オプション ファイルを作成して [mysqld] の欄を設けて値を basedir および datadir パラメータに指定できます。

    [mysqld]
    # set basedir to your installation path
    basedir=E:/mysql
    # set datadir to the location of your data directory
    datadir=D:/MySQLdata
    

    Windows のパラメータはオプション ファイルでバックスラッシュではなくスラッシュ (前向き)を使用して指定されていますのでその点ご留意ください。バックスラッシュを使用する際は 2 重のバックスラッシュを使用する必要があります。

    [mysqld]
    # set basedir to your installation path
    basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
    # set datadir to the location of your data directory
    datadir=D:\\MySQLdata
    

    datadir の値を MySQL 選定ファイルで変更する際は、MySQL サーバを起動する前に既存の MySQL データ ディレクトリのコンテンツを移動する必要があります。

    項2.3.7. 「オプション ファイルの作成」 を参照してください。

  • MySQL を再インストールあるいはアップグレードする際に、最初に既存の MYSQL のサービスを停止して削除しそれから MySQL を MySQL の の設定ウイザードを使用してインストールしなかった場合、このエラーが発生する場合があります。

    Error: Cannot create Windows service for MySql. Error: 0
    

    これは設定ウイザードがサービスをインストールしようとした時に既存のサービスが同じ名前で存在する場合に発生します。

    この問題の解決法の一つは設定ウイザードを使用する際 mysql 以外のサービス名を選択することです。これにより新しいサービスが正しくインストールされ、古いサービスはそのまま残ります。新旧のサービスが存在することは特に問題はありませんが、使用しない古いサービスは削除したほうが良いでしょう。

    古い mysql サービスを永久に削除するには、コマンドラインで以下のコマンドを管理権限のあるユーザーとして実行します。

    C:\> sc delete mysql
    [SC] DeleteService SUCCESS
    

    sc ユーティリティが お客様の Windows のバージョンで利用できない場合、delsrv ユーティリティを http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/delsrv-o.asp からダウンロードし、delsrv mysql 構文を使用します。

2.3.14. Windows を使用した MySQL をアップグレードする

この項では Windows を使用した MySQL のアップグレードに必要なステップについて説明します。

  1. Windows に特化しない MySQL のアップグレードに関する詳細は、項2.11. 「MySQL のアップグレード」 を参照してください。

  2. アップグレードを実行する前に常に現在の MySQL のインストールのバックアップを取る必要があります。項4.9.1. 「データベースのバックアップ」 参照。

  3. http://dev.mysql.com/downloads/ から MySQL の Windows ディストリビューションをダウンロードします。

  4. MySQL をアップグレードする前に、サーバを停止する必要があります。サーバをサービスとしてインストールしている場合は、コマンド プロンプトの以下のコマンドでサービスを停止します。

    C:\> NET STOP MySQL
    

    MySQL サーバをサービスを使用せず使用している場合は、以下のコマンドを使用してサーバを停止します。

    C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown
    

    :MySQL の root ユーザーアカウントにパスワードが設定されている場合、mysqladmin-p オプションで実行し、プロンプトが表示されたらパスワードを入力します。

  5. MySQL 5.1 を 4.1.5 以前のバージョンからアップグレードする場合、あるいは Zip アーカイブからインストールした MySQL バージョンを MySQL インストール ウイザードでインストールしたバージョンにアップグレードする場合は、以前のインストールと MySQL サービス (サーバがサービスとしてインストールされている場合) を手動で削除する必要があります。

    MySQL サービスを削除する場合、以下のコマンドを使用します。

    C:\> C:\mysql\bin\mysqld --remove
    

    既存のサービスを削除しなかった場合、MySQL インストール ウイザードは新しい MySQL サービスを適切にインストールできない場合があります。

  6. MySQL インストール ウイザードを使用する場合は、項2.3.3. 「MySQL インストール ウイザードを使用する」 の説明に従ってウイザードを起動します。

  7. Zip アーカイブから MySQL をインストールする場合、アーカイブを取りだします。既存の MySQL のインストールを上書きする (通常 C:\mysql にある) か、あるいはそれを C:\mysql5などの異なるディレクトリにインストールします。既存のインストールの上書きをお勧めしています。

  8. MySQL を Windows のサービスとして使用していて、この手順で以前のサービスを削除し、サービスを再インストールした場合。(項2.3.11. 「Windows のサービスとして MySQL を起動する」 参照。)

  9. サーバを再起動します。MySQL をサービスとして使用している場合、例えば NET START MySQL を使用するか、あるいは mysqld を直接実行します。

  10. エラーが発生したら、項2.3.13. 「Windows への MySQL インストールにおけるトラブルシューティング」 を参照します。

2.3.15. Windows 上の MySQL と Unix 上の MySQL の比較

Windows を使用した MySQL は実証済みで安定しています。Windows バージョンの MySQL は以下の例外を除いて Unix バージョンの MySQL と同じです。

  • Windows 95 およびスレッド

    Windows 95 は各スレッドの作成毎におよそ 200 バイトのメモリを消費します。MySQL の各接続毎にスレッドが作成されます。ですからサーバが多くの接続を扱う場合には Windows 95 では mysqld をあまり長時間使用しないようにします。Windows の新しいバージョンではこのバグによる影響はありません。

  • ポート数の制限

    Windows システムにはクライアント接続のポートがおよそ 4,000 あり、一つのポート接続が閉じるとそのポートを再度利用できるまで 2~4 分かかります。クライアントのサーバへに接続/切断頻度が高い環境では、すべての利用できるポートは閉じたポートが再度利用できるようになる前に使用してしまうことができます。このようになると、MySQL サーバはそれが動作中であっても反応していないようにみえます。ポートはマシンで実行されている他のアプリケーションでも同様に使用できます。その際、MySQL に利用できるポート数は少なくなります。

    この問題に関する詳細は、http://support.microsoft.com/default.aspx?scid=kb;en-us;196271を参照してください。

  • 同時読み込み

    MySQL は INSERTSELECT を混合する際 pread() および pwrite() のシステム コールに依存しています。現在、弊社では pread() および pwrite() をエミュレートするために mutex を使用しています。弊社では将来的に高速化を図るため readfile()/writefile() インターフェースを NT、2000、および XP に使用できるようにしてファイル レベルのインターフェースを仮想インターフェースに置き換える予定です。現在は MySQL 5.1 が使用できるオープン ファイルは 2,048 に制限されており、Unix に相当する同時スレッドを Windows NT、2000、XP、および 2003 では使用できないということを意味しています。

  • ブロック読み込み

    MySQL は各接続にブロック読み込みを使用しています。それは名前付きパイプ接続が有効になった場合以下が想定されます。

    • 接続は、Unix バージョンの MySQL とは異なり、8 時間後でも自動的に切断されない。

    • 接続がハングした場合、MySQL を停止せずにハングを解消できない。

    • mysqladmin kill は休眠中の接続には機能しない。

    • mysqladmin shutdown は休眠接続がある限るシャットダウンできない。

    弊社でこの問題を将来的に解決する予定です。

  • ALTER TABLE

    ALTER TABLE ステートメントを実行中は、テーブルは他のスレッドが使用できないようにロックされます。これは Windows の場合、使用中のファイルは別のスレッドで削除できないという事実に関連しています。将来的にはこの問題を解決する方法を見つける予定でます。

  • DROP TABLE

    MERGE ハンドラーがテーブルのマッピングを上部層の MySQL に非表示にしているために、MERGE テーブルで使用されている DROP TABLE は Windows では機能しません。Windowsでは開いているファイルは削除できないようになっているため、まずすべての MERGE テーブル (FLUSH TABLES で) をフラッシュするか、あるいはテーブルを削除する前にMERGE テーブルを削除する必要があります。

  • DATA DIRECTORY および INDEX DIRECTORY

    CREATE TABLEDATA DIRECTORY オプションと INDEX DIRECTORY オプションは Windows がシンボリック リンクをサポートしていないので Windows では無視されます。これらのオプションはまた非機能 realpath() コールのシステムでは無視されます。

  • DROP DATABASE

    スレッドで使用中のデータベースは削除できません。

  • タスク マネージャで MySQL をシャットダウンする

    Windows 95 では、タスク マネージャあるいはシャットダウン ユーティリティで MySQL をシャットダウンできません。それを停止するには mysqladmin shutdown を使用します。

  • ケース インセンシティブ ネーム

    ファイル名は Windows ではケース センシティブではありません。ですから MySQL データベースおよびテーブル名も Windows ではケース センシティブではありません。唯一の制限はデータベースおよびテーブル名は所定のステートメントでは同じケースを使用して指定される必要があるということだけです。項8.2.2. 「識別子の大文字/小文字区別」 参照。

  • \’ パス名区切り文字

    Winndows ではパス名のコンポーネントは ‘\’ 文字で区切られます。それは MySQL でもエスケープ文字です。LOAD DATA INFILE あるいは SELECT...INTO OUTFILE を使用している場合、Unix スタイルのファイル名を ‘/’ 文字と一緒に使用します。

    mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
    

    また、‘\’ を 2 本にする必要があります。

    mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
    
  • パイプに関する問題

    Pipes は Windows のコマンドライン プロンプトでは信頼性に欠けます。パイプに ^Z / CHAR(24) が含まれている場合、Windows はファイルの最後だと勘違いしてプログラムを中止します。

    これは以下のようにバイナリのログを適用する際の主な問題です。

    C:\> mysqlbinlog binary_log_file | mysql --user=root
    

    ログに関する問題が発生しその問題が ^Z / CHAR(24) 文字によるものだと考えられる場合は、以下の回避法が使用できます。

    C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql
    C:\> mysql --user=root --execute "source /tmp/bin.sql"
    

    後者のコマンドはバイナリのデータを含む SQL ファイルを確実に読み込むためにも使用できます。

  • Access denied for user エラー

    MySQL がホスト名の問題を適切に解決できない場合、同じマシンで動作しているサーバに接続するために MySQL クライアントのプログラムを実行しようとした時に以下のエラーが発生する場合があります。

    Access denied for user 'some_user'@'unknown'
    to database 'mysql'
    

    この問題を解決するためには、以下の情報を含むファイル名 \windows\hosts を作成する必要があります。

    127.0.0.1       localhost
    

ここに皆さんから改善に向けたご協力を頂けるであろう Windows を使用した MySQL の周知の問題を示します。

  • Microsoft から提供された高速のスレッド セーフな増分/減分メソッドを使用するためにマクロを追加します。

2.4. Linux に MySQL をインストールする

Linux に MySQL をインストールする方法として RPM パッケージをお勧めしています。MySQL RPM版としては現在 SuSE Linux 7.3 のシステムにビルドしていますが、rpm をサポートし glibc を使用した殆どの LInux に対応する必要があります。RPM パッケージの取得については、項2.1.3. 「MySQL の取得方法」 を参照してください。

MySQL AB ではプラットフォームに特化した RPM を提供しています。プラットフォーム特化の RPM と一般の RPM の違いはプラットフォーム特化版 RPM は対象のプラットフォームにビルドされて動的にリンクされているのに対し、一般の RPM は Linux のスレッドに静的にリンクされています。

:MySQL の RPM ディストリビューションは他のベンダーもよく提供しています。他のベンダーが提供している RPM ディストリビューションは MySQL AB が提供しているものとその機能および特徴において異なっており、本マニュアルの説明は他のベンダーのインストールには必ずしも適用しません。ベンダーの説明書はそれでも検討する必要はあります。

RPM ファイル (例えば、次のようなエラーメッセージが表示された場合 Sorry, the host 'xxxx' could not be looked up) に問題があった場合には、項2.13.1.2. 「Linux バイナリ ディストリビューションの注釈」 を参照してください。

殆どの場合、MySQL-server パッケージおよび MySQL-client パッケージのインストールだけで MySQL インストールの機能面は十分です。標準のインストールには他のパッケージは必要ありません。

MySQL パッケージにのインストールの際に依存型不具合 (例えば、error:removing these packages would break dependencies:libmysqlclient.so.10 is needed by ...) が表示された場合、共有ライブラリを含む MySQL-shared-compat パッケージをインストールして下位互換 (MySQL 4.0 用 libmysqlclient.so.12 および MySQL 3.23 用 libmysqlclient.so.10) を取る必要があります。

Linux ディストリビューションの中にはまだ MySQL 3.23 で出荷しているものもあり、その組み合わせは通常ディスク スペースを節約するためにアプリケーションに動的にリンクします。これらの共有ライブラリが個別のパッケージに入っている場合 (例えば、MySQL-shared)、このパッケージをインストールしたままで MySQL サーバとクライアント パッケージ (スタティックにリンクし共有ライブラリに依存していないもの) を単にアップグレードするだけで十分です。MySQL サーバ (例えば、Red Hat Linux) のように同じパッケージに共有ライブラリを含むディストリビューションには、弊社の 3.23 MySQL-shared RPM をインストールするか、あるいは MySQL-shared-compat パッケージを使用します。(両方をインストールしないでください。)

以下の RPM パッケージが利用できます。

  • MySQL-server-VERSION.i386.rpm

    MySQL サーバ。別のマシンで動作している MySQL サーバに接続する際にのみこれが必要です。

    注:MySQL 4.0.10 以前はサーバ RPM ファイルは MySQL-VERSION.i386.rpm と呼ばれていました。つまり、 -server がその名前にありませんでした。

  • MySQL-client-VERSION.i386.rpm

    標準の MySQL クライアント プログラムこのパッケージは常にインストールの希望があるパッケージです。

  • MySQL-bench-VERSION.i386.rpm

    テストおよびベンチマークPerl と DBI および DBD::mysql モジュールが必要です。

  • MySQL-devel-VERSION.i386.rpm

    Perl モジュールなど他の MySQL クライアントをコンパイルする際に必要なライブラリとファイルを含みます。

  • MySQL-shared-VERSION.i386.rpm

    このパッケージには言語およびアプリケーションが動的にロードされ MySQL を使用する必要のある共有ライブラリ (libmysqlclient.so*) を含みます。それにはシングル スレッドとスレッド セーフのバイナリが含まれます。このパッケージをインストールする場合は、MySQL-shared-compat パッケージはインストールしないできださい。

  • MySQL-shared-compat-VERSION.i386.rpm

    このパッケージには MySQL 3.23、4.0、4.1、および 5.1 の共有ライブラリが含まれています。それにはシングル スレッドとスレッド セーフのバイナリが含まれます。旧バージョンの MySQL に動的にリンクしたアプリケーションをインストールしていて現在のバージョンをライブラリの依存性を壊すことなくアップグレードを希望する際には MySQL-shared の代わりにこのパッケージをインストールします。

  • MySQL-embedded-VERSION.i386.rpm

    埋め込み型 MySQL サーバライブラリ (MySQL 4.0 で利用可) です。

  • MySQL-VERSION.src.rpm

    これにはすべての旧パッケージのソースコードが含まれています。他のアーキテクチャ (例えば、Alpha あるいは SPARC) で RPM をビルドする際にも使用できます。

RPM パッケージ (例えば MySQL-server RPM) のすべてのファイルを表示するには、以下のコマンドを実行します。

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

標準の最低限のインストールには、サーバとクライアント RPM をインストールします。

shell> rpm -i MySQL-server-VERSION.i386.rpm
shell> rpm -i MySQL-client-VERSION.i386.rpm

クライアント プログラムのみをインストールする場合は、クライアント RPM のみインストールします。

shell> rpm -i MySQL-client-VERSION.i386.rpm

RPM にはインストールするパッケージが完全であるかまたはその出処を確認する機能があります。この機能に関する詳細は、項2.1.4. 「MD5 チェックサムあるいは GnuPGを用いたパッケージの品質の検証」 を参照してください。

サーバ RPM はデータを /var/lib/mysql でディレクトリに格納します。RPM はまた MySQL サーバを運用するためのユーザー mysql (存在しない場合) のログイン アカウントを作成し、サーバがブート時に自動的に起動するように適切なエントリを /etc/init.d/ に作成します。(このことは以前インストールを実行しその起動スクリプトに変更を加えた場合、新バージョンの RPM をインストールする際に忘れないようにそのスクリプトのコピーを取っておくことを意味します。システム起動時の MySQL の自動的な起動に関する詳細は、項2.10.2.2. 「MySQL を自動的に起動・停止する」 を参照してください。

MySQL RPM を /etc/init.d (直接あるいは symlinkを介して) で初期化スクリプトをサポートしていない旧 Linux ディストリビューションにインストールするには、初期化スクリプトが実際にインストールされたロケーションを指すシンボリック リンクを作成する必要があります。例えば、ロケーションが /etc/rc.d/init.d の場合、RPM をインストールする前に以下のコマンドを使用して /etc/init.d をそこを指すシンボリック リンクとして作成します。

shell> cd /etc
shell> ln -s rc.d/init.d .

しかし、現在のすべての主な Linux ディストリビューションは /etc/init.d を使用している新しいディレクトリのレイアウトをサポートする必要があります。というのは、それが LSB (Linux Standard Base) 準拠に必要だからです。

インストールした RPM ファイルが MySQL-server を含んでいる場合、mysqld サーバをインストール後に設定して起動する必要があります。MySQL を使用して起動する必要があります。

上手くいかない場合には、バイナリのインストールの項で詳細を参照してください。項2.8. 「他の Unix 系システムへの MySQL のインストール」 参照。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

2.5. Mac OS X に MySQL をインストールする

MySQL を Mac OS X 10.3.x (「Panther」) あるいは新バージョンに、バイナリの tarball ディストリビューションではなく Mac OS X バイナリ パッケージを PKG フォーマットでインストールします。Mac OS X の旧バージョン (例えば 10.1.x or 10.2.x) はこのパッケージではサポートされて いません

パッケージはディスク画像 (.dmg) ファイルにあります。そのファイルはファインダーにあるアイコンをダブルクリックして最初にインストールする必要があります。次に画像をインストールしてそのコンテンツを表示します。

MySQL を取得するには、項2.1.3. 「MySQL の取得方法」 を参照してください。

:インストールを始める前に、動作中のすべての MySQL サーバインスタンスを MySQL 管理アプリケーション (Mac OS X サーバ用) あるいはコマンドラインの mysqladmin shutdown でシャットダウンする必要があります。

MySQL PKG ファイルを実際にインストールするには、パッケージのアイコンをダブルクリックします。これで Mac OS X パッケージ インストーラーが起動し、MySQL のインストールを案内します。

Mac OS X パッケージ インストーラーにバグがある場合、宛先ディスク選択ダイアログにエラーメッセージが表示されます。

You cannot install this software on this disk. (null)

エラーが発生したら、Go Back ボタンを 1 回クリックして前の画面に戻ります。次に Continue をクリックして宛先ディスク選択にもう一度進み、宛先ディスクを選択します。弊社ではこのバグを Apple 社に連絡してこの問題の調査を依頼しています。

MySQL 用 Mac OS X PKG が /usr/local/mysql-VERSION にインストールされると symbolic link、/usr/local/mysql もインストールされ、新しいロケーションをポイントします。/usr/local/mysql の名前のディレクトリがあると、最初に /usr/local/mysql.bak に名前が変わります。さらに、インストーラは mysql データベースで mysql_install_db を実行して許諾テーブルを作成します。

インストールのレイアウトは tar ファイルのバイナリ ディストリビューションに類似しています。すべての MySQL バイナリは /usr/local/mysql/bin にあります。MySQL のソケット ファイルはデフォルトで /tmp/mysql.sock として作成されます。項2.1.5. 「インストールのレイアウト」 参照。

MySQL インストールには mysql 名の Mac OS X ユーザーアカウントが必要です。この名前のユーザーアカウントは Mac OS X 10.2 およびそれ以降ではデフォルトで終了します。

Mac OS X サーバを使用している場合は、MySQL のバージョンのどれかをインストールする必要があります。以下の表には Mac OS X サーバのバージョンごとの MySQL を示しています。

Mac OS X サーバのバージョンMySQL バージョン
10.2-10.2.23.23.51
10.2.3-10.2.63.23.53
10.34.0.14
10.3.24.0.16
10.4.04.1.10a

本マニュアルのこの項では公式な MySQL Mac OS X PKG のインストールについてのみ説明します。MySQL をインストールするには Apple 社のヘルプ情報を必ず読んでください。「Help View」 のアプリケーションを実行し、「Mac OS X サーバ」 のヘルプを選択し、「MySQL,」 を探して 「MySQL のインストール」 の表題の項目を読みます。

http://www.entropy.ch から既に Mac OS X 用の Marc Liyanage の My SQL パッケージを使用している場合、そのページで提供しているバイナリのインストール レイアウトを使用したパッケージ用の更新情報に従ってください。

Marc の 3.23.x バージョンあるいは MySQL の Mac OS X サーバ バージンから公式の MySQL PKG にアップグレードする際には、既存の MySQL 権限テーブルも現在のフォーマットに変換する必要があります。現在のフォーマットにはセキュリティの権限が追加されています。項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 参照。

MySQL をシステムの起動時に起動したい場合には、MySQL の起動アイテムもインストールする必要があります。それは個別のインストール パッケージで Mac OS X のインストール ディスク画像の一部をなすのもです。MySQLStartupItem.pkg アイコンをクリックするだけで、それをインストールするには説明の手順に従います。起動アイテムは一度だけインストールします。MySQL パッケージを後でインストールするたびにインストールする必要はありません。

MySQL の起動アイテムは /Library/StartupItems/MySQLCOM にあります。.(MySQL 4.1.2 以前では、そのロケーションは /Library/StartupItems/MySQL でしたが、Mac OS X サーバでインストールされた MySQL 起動アイテムと衝突していました。)起動アイテムをインストールすると変数 MYSQLCOM=-YES- がシステムの設定ファイル /etc/hostconfig に追加されます。MySQL の自動的な起動を無効にするには、この変数を単純に MYSQLCOM=-NO- に変更するだけです。

Mac OS X サーバでは、デフォルトの MySQL インストールが /etc/hostconfig ファイルにある変数 MYSQ を使用します。MySQL AB 起動アイテムのインストーラで この変数を MYSQL=-NO- に設定すると無効にします。これによって MySQL AB の起動アイテムによる MYSQLCOM 変数との衝突を避けられます。しかし、それによって動作中の MySQL サーバをシャットダウンすることはありません。それはご自身で行ってください。

インストールしたら、端末ウインドウで以下のコマンドを実行することで MySQL を起動できます。このタスクを実行するには管理者権限が必要です。

起動アイテムをインストールしたら、このコマンドを使用します。

shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(Enter your password, if necessary)
(Press Control-D or enter "exit" to exit the shell)

起動アイテムを使用しない場合には、以下のコマンド シーケンスを入力します。

shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(Enter your password, if necessary)
(Press Control-Z)
shell> bg
(Press Control-D or enter "exit" to exit the shell)

MySQL サーバに、例えば /usr/local/mysql/bin/mysql を実行すると接続できます。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

shell のリソース ファイルに別名を追加するとコマンドラインの mysql および mysqladmin などのよく使用するプログラムに容易にアクセスできます。bash の構文は以下のようになります。

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

tcsh には、以下を使用します。

alias mysql /usr/local/mysql/bin/mysql
alias mysqladmin /usr/local/mysql/bin/mysqladmin

/usr/local/mysql/bin to your PATH 環境変数を追加すると更によくなります。例えば、shell がbash の場合には以下の行を $HOME/.bashrc ファイルに追加します。

PATH=${PATH}:/usr/local/mysql/bin

shell がtcsh の場合には以下の行を $HOME/.tcshrc ファイルに追加します。

setenv PATH ${PATH}:/usr/local/mysql/bin

.bashrc あるいは .tcshrc ファイルがホーム ディレクトリにない場合には、それをテキスト エディタで作成します。

既存のインストールのアップグレードの際、新しい MySQL PKG をインストールしても古いインストールのディレクトリは削除されません。残念ながら、Mac OS X のインストーラは以前インストールしたパッケージの適切なアップグレードに必要な機能をまだ提供していません。

既存のデータベースを新しいインストールで使用するには、古いデータ ディレクトリのコンテンツを新しいデータ ディレクトリにコピーする必要があります。このコピーを行う時には新旧のサーバが動作していないことを確認します。古いインストレーションからの MySQL データベース ファイルのコピーが終了して新しいサーバの起動が完了したら、ディスク スペースを空けるために古いインストレーションを削除します。さらに、/Library/Receipts/mysql-VERSION.pkg にある古いバージョンのパッケージを入れたディレクトリの削除する必要があります。

2.6. Solaris に MySQL をインストールする

MySQL をバイナリの tarball ディストリビューションで Solaris にインストールする際、MySQL のディストリビューションを開ける前に既に問題に出くわします。これは Solaris の tar が長いファイル名を扱えないからです。これは MySQL を解凍する時にエラーが表示されることを意味します。

この問題が発生したら、GNU tar (gtar) を使用してディストリビューションを解凍します。Solaris 用にコンパイルしたコピーは http://dev.mysql.com/downloads/os-solaris.html にあります。

MySQL の Solaris へのインストールをバイナリの tarball のディストリビューションではなく PKG フォーマットのバイナリのパッケージを使用して行うことができます。バイナリの PKG フォーマットを使用してインストールする前に、mysql のユーザーおよびグループなどを作成する必要があります。

groupadd mysql
useradd -g mysql mysql

基本的な PKG 取扱いのフロー例

  • パッケージを追加する

    pkgadd -d package_name.pkg
    
  • パッケージを削除する

    pkgrm package_name
    
  • インストールしたパッケージの全リストを取得する

    pkginfo
    
  • パッケージに関する詳細を取得する

    pkginfo -l package_name
    
  • パッケージに属すファイルのリストを表示する

    pkgchk -v package_name
    
  • アービトラリ ファイルのパッケージ情報を取得する

    pkgchk -l -p file_name
    

MySQL の Solaris へのインストールに関する詳細は、項2.13.3. 「Solaris に関する注釈」 を参照してください。

2.7. MySQL を NetWare にインストールする

MySQL の NetWare へのポートは Novell 社先導の多大な貢献によるもです。NetWare 6.5 はバンドルした MySQL バイナリと同梱で、そのバージョンの NetWare 上で動作するすべてのサーバは自動商用ライセンス完備ですので Novell 社のお客様はきっと喜んでおられる事でしょう

NetWare 用 MySQL は NetWare 用 Metrowerks 社の CodeWarrior および GNU オートツールのクロス コンパイル バージョンの組み合わせでコンパイルされたものです。

NetWare 用最新のバイナリ パッケージは http://dev.mysql.com/downloads/ で入手できます。項2.1.3. 「MySQL の取得方法」 参照。

MySQL をホストするには、NetWare サーバは以下の要件を満たす必要があります。

  • NetWare 6.5 の最新のサポート パックがインストールされていること。

  • システムは NetWare のそれぞれのバージョンの動作に要する Novell 社の最低限の要件を満たしていること。

  • MySQL データおよびプログラム バイナリが NSS ボリュームにインストールされていること。従来のボリュームはサポートされていません。

MySQL を NetWare にインストールするには、以下の手順を踏みます。

  1. 以前のインストールからアップグレードするには、MySQL サーバを停止してください。これはサーバのコンソールから、以下のコマンドを使用して実行できます。

    SERVER:  mysqladmin -u root shutdown
    

    :MySQL の root ユーザーアカウントにパスワードが設定されている場合、mysqladmin-p オプションで実行し、プロンプトが表示されたらパスワードを入力します。

  2. MySQL をインストールするロケーションにアクセスしてクライアント マシンからターゲットのサーバにログオンします。

  3. サーバにバイナリ パッケージの Zip ファイルを取り出します。Zip ファイルのパスが使用できるか確認します。単純にファイルを SYS:\ に取り出すほうが安全です。

    以前のインストールをアップグレードするには、データ ディレクトリ (例えば、SYS:MYSQL\DATA)、および my.cnf を、それをカスタマイズしている場合、コピーする必要があります。次に MySQL の古いコピーを削除します。

  4. ディレクトリを分かり安く使いやすい名前に変更できます。本マニュアルの例ではインストール ディレクトリに SYS:MYSQL を使用しています。

    MySQL を NetWare へのインストールする際、MySQL のあるバージョンが既に NetWare のリリース以外にインストールされている場合は検知しません。ですから、SYS:\MYSQL のウェブ (例えば、MySQL 4.1 あるいはそれ以降) から最新の MySQL をインストールした場合、NetWare のサーバをアップグレードする前にフォルダの名前を変える必要があります。名前を変更しないと SYS:\MySQL のファイルは NetWare サポート パックにある MySQL で上書きされます。

  5. サーバのコンソールで、MySQL NLM を含むディレクトリに検索パスを追加します。例えば、

    SERVER:  SEARCH ADD SYS:MYSQL\BIN
    
  6. データ ディレクトリと許諾テーブルを必要に応じて mysql_install_db をサーバのコンソールで実行して初期化します。

  7. サーバのコンソールで mysqld_safe を使用して MySQL サーバを起動します。

  8. インストールを終了するには、以下のコマンドも autoexec.ncf に追加します。例えば、MySQL のインストールが SYS:MYSQL で MySQL を自動的に起動したい場合、以下のコマンドを追加します。

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE
    

    MySQL を NetWare 6.0 で稼動している場合、コマンドラインの --skip-external-locking オプションを使用することを強くお勧めしますう。

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE --skip-external-locking
    

    CHECK TABLE および REPAIR TABLEmyisamchk の代わりに使用します。それは myisamchk が外部のロッキングを使用しているからです。外部のロッキングは NetWare 6.0 上では問題があることが知られています。その問題は NetWare 6.5 では無視されてきました。MySQL の Netware 6.0 への使用は公式にはサポートしていないことをご留意ください。

    NetWare の mysqld_safe は画面に表示されます。mysqld_safe NLM をアンロード (シャットダウン) する際、画面はデフォルトで消えないようになっています。代わりに、それはユーザーの入力でプロンプトします。

    *<NLM has terminated; Press any key to close the screen>*
    

    NetWare の画面を自動的に閉じるようにするには、--autoclose オプションを使用して mysqld_safe にします。例えば、

    #Starts the MySQL 5.1.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE --autoclose
    

    NetWare のmysqld_safe の振る舞いに関する詳細は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 を参照してください。

  9. MySQL を最初にインストール、あるいは以前のバージョンからアップグレードするには、NetWare 用の最新で適切な Perl および PHP 拡張をダウンロードしてインストールします。

NetWare サーバに既存の MySQL のインストーるがある場合、autoexec.ncf で既存の MySQL の起動コマンドを確認し、必要に応じてそれらを編集あるいは削除します。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

2.8. 他の Unix 系システムへの MySQL のインストール

この項では圧縮 tar ファイル (.tar.gz 拡張のファイル) のフォームで様々なプラットフォームに提供されている MySQL のバイナリのディストリビューションのインストールについて説明します。詳細は、項2.1.2.5. 「MySQL AB でコンパイルした MySQL バイナリ」 を参照してください。

MySQL を取得するには、項2.1.3. 「MySQL の取得方法」 を参照してください。

MySQL tar ファイルのバイナリ ディストリビューションには mysql-VERSION-OS.tar.gz 形式の名前があり、VERSION は番号 (例えば、5.1.15-beta) で、OS はディストリビューションが意図するオペレーティング システムの種類を意味します(例えば、pc-linux-i686)。

これらの一般的なパッケージに加え、弊社ではまた選択したプラットフォームにはバイナリをプラットフォームに特化したパッケージ フォーマットで提供しています。これらのインストールの詳細に関しては、項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 を参照してください。

MySQL tar ファイルのバイナリ ディストリビューションをインストールするには以下のツールが必要です。

  • ディストリビューションの解凍用 GNU gunzip

  • ディストリビューションのアンパック用 tar。GNU tar が機能することが知られています。オペレーティング システムの中には問題があるとされる tar のプリインストール バージョンがあります。例えば、Mac OS X tar および Sun tar は長いファイル名の場合問題があるが知られています。Mac OS X 上では、プリインストールの gnutar プログラムを使用できます。欠陥のある tar の他のシステムに、GNU tar を最初にインストールする必要があります。

問題が発生してバグをレポートする必要が生じた場合には、項1.7. 「質問またはバグの報告」 の手順に従ってください。

MySQL のバイナリのディストリビューションのインストールおよびその使用の際に必要な基本的なコマンド

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

:このプロシージャでは MySQL のアカウントのパスワードは設定しません。そのプロシージャの後は、項2.10. 「インストール後の設定とテスト」 に進みます。

上述のバイナリ ディストリビューションのインストールに関する詳細な説明は以下のようになります。

  1. mysqld にログイン ユーザーとグループを追加するには以下を実行します。

    shell> groupadd mysql
    shell> useradd -g mysql mysql
    

    これらのコマンドにより mysql グループと mysql ユーザーを追加します。useradd および groupadd の構文は Unix のバージョンにより多少異なったり、あるいはadduser および addgroup など異なる名前が付く場合があります。

    ユーザーやグループをmysql のではなく別の名前に変更することもできます。その場合、以下の手順で別の名前をつけます。

  2. ディストリビューションを解凍するディレクトリを選択してその中にロケーションを変更します。以下の例では、ディストリビューションを /usr/local に解凍します。(この説明では、/usr/local にファイルとディレクトリを作成する権限を有するものとして説明を続けます。ディレクトリが保護されている場合、インストールを root として行う必要があります。)

    shell> cd /usr/local
    
  3. ディストリビューションを 項2.1.3. 「MySQL の取得方法」 の説明に従って取得します。所定のリリースでは、すべてのプラットフォームのバイナリのディストリビューションは同じ MySQL のソース ディストリビューションでビルドされています。

  4. ディストリビューションを解凍すると、インストールのディレクトリが作成されます。次にそのディレクトリにシンボリック リンクを作成します。

    shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
    shell> ln -s full-path-to-mysql-VERSION-OS mysql
    

    tar コマンドが mysql-VERSION-OS 名のディレクトリを作成します。ln コマンドがディレクトリへのシンボリック リンクを作成します。これによって /usr/local/mysql のインストール ディレクトリに容易にアクセスできます。

    GNU tar では、gunzip の個別の呼び出しは必要ありません。最初の行を以下のコマンドに置き換えてディストリビューションを解凍し取り出すことができます。

    shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
    
  5. ロケーションをインストールのディレクトリに変更します。

    shell> cd mysql
    

    mysql ディレクトリにはいくつかのファイルとサブディレクトリがあります。インストールに最も重要なものは bin および scripts のサブディレクトリです。

    • bin ディレクトリにはクライアント プログラムとサーバが含まれています。shell が MySQL プログラムを間違いなく見つけるにはこのディレクトリの完全なパス名を PATH 環境変数に追加する必要があります。項2.14. 「環境変数」 参照。

    • scripts ディレクトリは mysql_install_db スクリプトを含み、それによってサーバのアクセス権限を保持する許諾テーブルを含む mysql データベースを初期化します。

  6. 今まで MySQL をインストールしたことがない場合には、MySQL 許諾テーブルを作成する必要があります。

    shell> scripts/mysql_install_db --user=mysql
    

    コマンドを root として実行する場合、以下の --user オプションを使用する必要があります。オプションの値はサーバに稼動に使用する最初のステップで作成したログイン アカウント名になります。そのユーザーでログインしてそのコマンドを実行する場合、--user オプションは無視できます。

    許諾テーブルを作成して更新した後にサーバを手動で再起動する必要があります。

  7. プログラム バイナリの所有者を root に、データ ディレクトリの所有者を mysqld を運用するユーザーに変更します。インストール ディレクトリ (/usr/local/mysql) にいると想定した場合、そのコマンドは以下のようになります。

    shell> chown -R root  .
    shell> chown -R mysql data
    shell> chgrp -R mysql .
    

    最初のコマンドはファイルの所有者属性を root ユーザーに変更します。2 番目のコマンドはデータ ディレクトリの所有者属性 mysql ユーザーに変更します。3 番目のコマンドはグループ属性を mysql グループに変更します。

  8. マシンをブートしたときに MySQL を自動的に起動する場合は、support-files/mysql.server をシステムの起動ファイルがあるロケーションにコピーします。詳細 support-files/mysql.server のスクリプトおよび 項2.10.2.2. 「MySQL を自動的に起動・停止する」 にあります。

  9. DBI および DBD::mysql Perl モジュールをインストールする場合、bin/mysql_setpermission スクリプトを使用して新しいアカウントを設定できます。その手順は、項2.15. 「Perl のインストールに関する注釈」 を参照してください。

  10. mysqlaccess を使用して MySQL ディストリビューションを標準とは異なる別のロケーション入れるには、mysqlaccessmysql クライアントを探すロケーションを変更する必要があります。bin/mysqlaccess スクリプトをおよそ行 18 で編集します。以下のような行を探します。

    $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
    

    パスをを mysql が実際にシステムの保存されたロケーションに変更します。パスを変更しないと Broken pipe エラーが mysqlaccess を実行したときに発生します。

すべてを解凍してインストールしたら、ディストリビューションをテストします。MySQL サーバを起動するには、以下のコマンドを使用します。

shell> bin/mysqld_safe --user=mysql &

そのコマンドが直ぐに失敗し、mysqld ended をプリントした場合、そのデータ ディレクトリの host_name.err ファイルから情報を入手できます。

mysqld_safe に関する詳細は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 にあります。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

2.9. ソースのディストリビューションを使用した MySQL のインストール

ソースからのインストールを始める前に、弊社のバイナリがお客様のプラットフォームで使用できるかまたは機能するかチェックしてください。弊社では弊社のバイナリが最良のオプションでビルドされたものであることを確認するために最大限の努力を払っています。

MySQL のソース ディストリビューションを取得するには、項2.1.3. 「MySQL の取得方法」 を参照してください。

MySQL のソース ディストリビューションは圧縮 tar アーカイブで提供しており、フォームの名前は mysql-VERSION.tar.gz です。VERSION5.1.15-beta のような番号です。

MySQL をソースからビルドしてインストールするには以下のツールが必要です。

  • ディストリビューションの解凍用 GNU gunzip

  • ディストリビューションのアンパック用 tar。GNU tar が機能することが知られています。オペレーティング システムの中には問題があるとされる tar のプリインストール バージョンがあります。例えば、初期バージョンの Mac OS X tar で提供されている tar、SunOS 4.x および Solaris 8 またはそれ以前のバージョンは長いファイル名の場合に問題があることが知られています。Mac OS X 上では、プリインストールの gnutar プログラムを使用できます。欠陥のある tar の他のシステムに、GNU tar を最初にインストールする必要があります。

  • ANSI C++ コンパイラ. gcc 2.95.2 あるいはそれ以降、egcs 1.0.2 またはそれ以降あるいは egcs 2.91.66、SGI C++、および SunPro C++ は問題なく機能するものとして知られています。libg++gcc を使用する際は必要ありません。 gcc 2.7.x は sql/sql_base.cc などの完全な legal C++ のファイルのいくつかをコンパイルできなくするバグを含んでいます。gcc 2.7.x だけの場合、gcc を MySQL をコンパイルできるようにアップグレードする必要があります。gcc 2.8.1 もいくつかのプラットフォームでは問題あるとされており、そのプラットフォームに新しいコンパイラがある場合には使用しないでください。

    gcc 2.95.2 あるいはそれ以降を MySQL 3.23.x のコンパイルにお勧めします。

  • 優良な make プログラム。GNU make を常に推奨しており、また必要な場合もあります。問題に遭遇した場合には GNU make 3.75 あるいはそれ以降をお勧めします。

gcc のバージョンを使用していて、それが -fno-exceptions オプションを理解できるほど新しい場合は、このオプションを使用することが 非常に重要 です。それを使用しない場合、無作為にクラッシュするバイナリをコンパイルすることになります。また、-felide-constructors および -fno-rtti-fno-exceptions と一緒に使用することをお勧めします。疑念がある場合、以下を実行します。

CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
       -fno-exceptions -fno-rtti" ./configure \
       --prefix=/usr/local/mysql --enable-assembler \
       --with-mysqld-ldflags=-all-static

ほとんどのシステムでは、これによって速くて安定したバイナリが得られます。

問題が発生してバグをレポートする必要が生じた場合には、項1.7. 「質問またはバグの報告」 の手順に従ってください。

2.9.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> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

ソースの RPM から起動する場合、以下を実行します。

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm

これによりインストールできるバイナリの RPM が作成されます。旧バージョンの RPM は、コマンド rpmbuildrpm で置き換える必要があります。

:このプロシージャでは MySQL のアカウントのパスワードは設定しません。以下のプロシージャの後、項2.10. 「インストール後の設定とテスト」 に進みインストール後の設定およびテストを行います。

上述のソース ディストリビューションを使用した MySQL のインストールに関する詳細な説明は以下のようになります。

  1. mysqld にログイン ユーザーとグループを追加するには以下を実行します。

    shell> groupadd mysql
    shell> useradd -g mysql mysql
    

    これらのコマンドにより mysql グループと mysql ユーザーを追加します。useradd および groupadd の構文は Unix のバージョンにより多少異なったり、あるいはadduser および addgroup など異なる名前が付く場合があります。

    ユーザーやグループをmysql のではなく別の名前に変更することもできます。その場合、以下の手順で別の名前をつけます。

  2. ディストリビューションを解凍するディレクトリを選択してロケーションをそれに変更します。

  3. ディストリビューションを 項2.1.3. 「MySQL の取得方法」 の説明に従って取得します。

  4. ディストリビューションを現在のディレクトリに解凍します。

    shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
    

    このコマンドで mysql-VERSION 名のディレクトリが作成します。

    GNU tar では、gunzip の個別の呼び出しは必要ありません。ディストリビューションを解凍し取り出す際に以下のコマンドも使用できます。

    shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
    
  5. ロケーションを解凍したディストリビューションの上段のディレクトリに変更します。

    shell> cd mysql-VERSION
    

    現在は MySQL をこの上段のディレクトリから設定してビルドする必要があります。別のディレクトリにビルドすることはできません。

  6. リリースを設定してすべてをコンパイルします。

    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    

    configure を実行する時、他のオプションを指定みてはいかがでしょう。オプション リストを表示するには ./configure --help を実行します。項2.9.2. 「典型的な configure オプション」、には更に有用なオプションの説明がいくつかあります。

    configure が失敗して MySQL メーリング リストに協力を求める際は、その問題の解決に役立つと思われる config.log の行を含めてください。また configure の出力の少なくとも最後の数行も含めてください。レポートを提出する際は、項1.7. 「質問またはバグの報告」 の説明を使用してください。

    コンパイルに失敗した場合には、項2.9.4. 「MySQL のコンパイルに関する問題」 を参照してください。

  7. ディストリビューションのインストール

    shell> make install
    

    オプション ファイルを設定する際は、support-files ディレクトリにあるどれか一つをテンプレートとして使用します。例えば、

    shell> cp support-files/my-medium.cnf /etc/my.cnf
    

    これらのコマンドを root として実行する必要があるかも知れません。

    InnoDB テーブルのサポートを設定するには、/etc/my.cnf ファイルを編集し、 innodb_... で始まるオプション行の前にある # 記号を削除し、任意のオプション値に変更します。項3.3.2. 「オプションファイルの使用」、および 項13.5.3. 「InnoDB 設定」 参照。

  8. ロケーションをインストールのディレクトリに変更します。

    shell> cd /usr/local/mysql
    
  9. 今まで MySQL をインストールしたことがない場合には、MySQL 許諾テーブルを作成する必要があります。

    shell> bin/mysql_install_db --user=mysql
    

    コマンドを root として実行する場合、以下の --user オプションを使用する必要があります。オプションの値はサーバに稼動に使用する最初のステップで作成したログイン アカウント名になります。そのユーザーでログインしてそのコマンドを実行する場合、--user オプションは無視できます。

    mysql_install_db を MySQL の許諾テーブルの作成に使用した後、手動でサーバを再起動する必要があります。これを行うための mysqld_safe コマンドは後のステップで説明します。

  10. プログラム バイナリの所有者を root に、データ ディレクトリの所有者を mysqld を運用するユーザーに変更します。インストール ディレクトリ (/usr/local/mysql) にいると想定した場合、そのコマンドは以下のようになります。

    shell> chown -R root  .
    shell> chown -R mysql var
    shell> chgrp -R mysql .
    

    最初のコマンドはファイルの所有者属性を root ユーザーに変更します。2 番目のコマンドはデータ ディレクトリの所有者属性 mysql ユーザーに変更します。3 番目のコマンドはグループ属性を mysql グループに変更します。

  11. マシンをブートしたときに MySQL を自動的に起動する場合は、support-files/mysql.server をシステムの起動ファイルがあるロケーションにコピーします。詳細は support-files/mysql.server のスクリプトおよび 項2.10.2.2. 「MySQL を自動的に起動・停止する」 にもあります。

  12. DBI および DBD::mysql Perl モジュールをインストールする場合、bin/mysql_setpermission スクリプトを使用して新しいアカウントを設定できます。その手順は、項2.15. 「Perl のインストールに関する注釈」 を参照してください。

すべてをインストールしたら、ディストリビューションをテストする必要があります。MySQL サーバを起動するには、以下のコマンドを使用します。

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

そのコマンドが直ぐに失敗し、mysqld ended をプリントした場合、そのデータ ディレクトリの host_name.err ファイルから情報を入手できます。

mysqld_safe に関する詳細は、項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 にあります。

:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。

2.9.2. 典型的な configure オプション

configure スクリプトを使用することによって MySQL のソース ディストリビューションの設定を柔軟にできます。通常は、configure コマンド ラインのオプションを使用してこれを行います。また、特定の環境変数を使ってconfigure を変更することもできます。項2.14. 「環境変数」 参照。configure がサポートしているオプションの完全なリストを表示するには、このコマンドを実行します。

shell> ./configure --help

利用できる configure オプションを以下説明します。

  • MySQL クライアント ライブラリおよびクライアント プログラムのみをコンパイルしてサーバを含まない場合、--without-server オプションを選択します。

    shell> ./configure --without-server
    

    C++ のコンパイラを持っていない場合、mysql などのクライアント プログラムは C++ が必要なためコンパイルできません。この場合 C++ コンパイラをテストするコードを configure からさ削除し、次に ./configure--without-server オプションで実行します。コンパイルのステップはそれでもすべてのクライアントをビルドしようとしますが、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 に変更します。

    インストールのディレクトリのロケーションとデータ ディレクトリのロケーションも --basedir および --datadir オプションを使用してサーバの起動時に変更できます。これらは、通常はオプション ファイルを使用するのが一般的ではあるが、コマンドラインあるいは MySQL オプション ファイルで変更可能です。項3.3.2. 「オプションファイルの使用」 参照。

  • Unix を使用していて MySQL ソケット ファイルのロケーションをデフォルトのロケーション(通常は /tmp あるいは /var/run のディレクトリにある) とは別の場所に変更するには、以下のような configure コマンドを使用します。

    shell> ./configure \
               --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
    

    ソケットのファイル名は絶対パス名にする必要があります。MySQL のオプション ファイルを使用してサーバの起動時に mysql.sock のロケーションを変更することもできます。項B.1.4.5. 「How to Protect or Change the MySQL Unix Socket File」 参照。

  • 静的にリンクしたプログラム (例えば、バイナリ ディストリビューションの作成、パフォーマンスの向上、あるいは Red Hat Linux ディストリビューションの問題回避) をコンパイルするには、以下のように configure を実行します。

    shell> ./configure --with-client-ldflags=-all-static \
               --with-mysqld-ldflags=-all-static
    
  • gcc を使用していて libg++ あるいは libstdc++ インストールしていない場合、configuregcc を C++ コンパイラとして使用するよう指定できます。

    shell> CC=gcc CXX=gcc ./configure
    

    gcc を C++ コンパイラとして使用すると、libg++ あるいは libstdc++ ではリンクしません。それらのライブラリをインストールしていたとしてもこれをしてほうがよいでしょう。それらのバージョンのいくつかはこれまで MySQL ユーザーに予想外な問題を起こしてきました。

    以下のリストはそれぞれ一般に使用されてきたいくつかのコンパイラおよび環境変数の設定を示したものです。

    • gcc 2.7.2:

      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"
      

    ほとんどの場合、上記のリストにあるオプションを使用して適度に最適化された MySQL のバイナリを得て、以下のオプションを configure の行に追加します。

    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static
    

    フルの configure 行は、言い換えると、最近のすべての gcc バージョンに対しては多少なりとも以下のようになります。

    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://dev.mysql.com/downloads/ で提供しているバイナリはすべて完全な最適化の下でコンパイルしているため、ほとんどのユーザーにパーフェクトに適合します。項2.1.2.5. 「MySQL AB でコンパイルした MySQL バイナリ」 参照。Configulation の設定の中には少し微調整して高速のバイナリをビルドできるものもありますが、しかしこれらの設定は熟練したユーザー向けです。項6.5.4. 「MySQL の速度に対するコンパイルとリンクの影響」 参照。

    コンパイラでのビルドに失敗してエラーが発生した場合、あるいはリンカが共有ライブラリ libmysqlclient.so.N (N はバージョン番号) を作成できない場合、--disable-shared オプションを configure することでこの問題を回避できます。.この場合、configure は共有 libmysqlclient.so.N ライブラリをビルドしません。

  • デフォルトでは、MySQL は latin1 (cp1252 西部ヨーロッパ) 文字セットを使用します。デフォルトの設定を変更するには、--with-charset オプションを使用します。

    shell> ./configure --with-charset=CHARSET
    

    CHARSET は次のいずれかです。binaryarmscii8asciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8項4.10.1. 「データおよびソート用キャラクタ セット」 参照。(その他の文字セットも利用できます。現在のリストは ./configure --help の出力をチェックしてください。)

    デフォルトで照合を指定することもできます。MySQL はデフォルトで latin1_swedish_ci 照合を使用しています。この設定を変更するには --with-collation オプションを使用します。

    shell> ./configure --with-collation=COLLATION
    

    文字セットと照合の両方を変更するには、--with-charset および --with-collation オプションを使用します。文字セットの照合は規定の照合になります。(各文字列セットにどの照合を使用するかを決めるには SHOW COLLATION ステートメントを使用します。

    警告: テーブル作成後に文字セットを変更するには myisamchk -r -q --set-collation=collation_name をすべての MyISAM テーブルに実行する必要があります。.さもなければ、インデックスの分類が正しく行われない場合があります。この問題は MySQL のインストール、テーブルの作成、および 異なる文字セットを MySQL に設定してそれを再インストールする際に起こります。

    configure オプション --with-extra-charsets=LIST で、他にどの文字セットをサーバにコンパイルするか定義できます。LIST は以下のいずれかになります。

    • スペースで区切られた文字列セット名のリスト

    • complex は動的にロードできないすべての文字セットを含む

    • all はバイナリのすべての文字セットを含む

    サーバとクライアントで文字変換するクライアントは SET NAMES ステートメントを使用する必要があります。項12.5.3. 「SET 構文」、および 項9.4. 「接続のキャラクタセットおよび照合順序」 参照。

  • MySQL をデバッグ コードで設定するには --with-debug オプションを使用します。

    shell> ./configure --with-debug
    

    これによりエラーを検出し状況に関する出力を提供する安全メモリ アロケータを含むことができます。Debugging a MySQL Server 参照。

    MySQL 5.1.12 では、--with-debug を使用して MySQL のデバッグのサポートを可能にしサーバの起動時に --debug="d,parser_debug" オプションを使用できるようにします。これにより SQL ステートメントの処理に使用される Bison parser に parser トレースをサーバの標準エラー出力にダンプさせます。一般的には、この出力はエラーログに記録されます。

  • クライアント プログラムがスレッドを使用しているので、MySQL クライアント ライブラリのスレッド セーフなバージョンを --enable-thread-safe-client 設定オプションでコンパイルする必要があります。これにより libmysqlclient_r ライブラリが作成され、それによってスレッドしたアプリケーションをリンクします。項23.2.16. 「スレッド付きクライアントを作る方法」 参照。

  • --with-big-tables オプションを使用して大きなテーブルのサポートが付き MySQL をビルドできます。

    このオプションではテーブルの行カウントを保存する変数をunsigned long ではなく unsigned long long で宣言します。これによりおよそ 1.844E+19 ((232)2) 行を 232 (~4.295E+09) 行の代わりに保持できます。以前は -DBIG_TABLES コンパイラに手動で渡してこの機能を有効にする必要がありました。

  • configure--disable-grant-options オプションで実行し、--bootstrap, --skip-grant-tables、および --init-file オプションを mysqld に対して無効にします。Windows では、configure.js スクリプトが DISABLE_GRANT_OPTIONS フラグを認識し、同じ効果を持ちます。この機能は MySQL 5.1.15より利用できます。

  • 特殊なオペレーティング システムに関するオプションは、項2.13. 「オペレーティング システムに特化した注釈」 を参照してください。

  • MySQL のセキュア (暗号化した) な接続のサポート設定に関するオプションは、項4.8.7.2. 「SSL接続」 を参照してください。

  • configure オプションのいくつかはプラグインの選択およびビルドに適用されます。プラグインを静的 (サーバにコンパイル) あるいは動的 (使用前に INSTALL PLUGIN ステートメントでインストールが必要な動的ライブラリとしてビルドされる) なプラグインとしてビルドできます。プラグインの中には静的あるいは動的ビルドをサポートしていないものもあります。

    configure --help はプラグインの関する以下の情報を網羅しています。

    • プラグイン関連オプション

    • 利用可能なすべてのプラグイン名

    • 各プラグインの、その目的の説明、サポートしているビルドの種類(静的あるいは動的)、およびそれが属するプラグイン のグループ

    以下の configure オプションでプラグインの選択および無効にします。

    --with-plugins=PLUGIN[,PLUGIN]...
    --with-plugins=GROUP
    --with-plugin-PLUGIN
    --without-plugin-PLUGIN
    

    PLUGINcsv あるいは archive など個別のプラグイン名です。

    略語では、GROUPnone (プラグインの選択なし) あるいは all (すべてのプラグインの選択) など設定グループ名を表します。

    --with-plugins にはコンマ区切られた、あるいはプラグイン グループ名の一つ以上のプラグイン名のリストがあります。名前付きプラグインは静的プラグインとしてのビルド用に構成されています。

    --with-plugin-PLUGIN は所定のプラグインを静的なプラグインとしてビルドできるように設定します。

    --without-plugin-PLUGIN は所定のプラグインのビルドを無効にします。

    プラグインが --with あるいは --without オプションの両方で 名前がある場合、その結果は定義できません。

    明示的な選択あるいは無効になっていないプラグインは、動的ビルドをサポートしている場合に動的にビルドに選択され、動的ビルドをサポートしていない場合は選択されません。(このように、プラグインのオプションが与えられない場合、動的ビルドをサポートするすべてのプラグインは動的プラグインとしてのビルドに選択されます。動的ビルドをサポートしていないプラグインはビルドされません。)

2.9.3. 開発ソース ツリーからのインストール

注意 :このセクションは、当社の新しいコードのテストに協力していただける場合にのみお読みください。単に MySQL を立ち上げてお客様のシステムを運用する場合には、標準のディストリビューション (バイナリあるいはソースのディストリビューション) を使用されるようお願いします。

最新の開発ソース ツリーを取得するには、BitKeeper が手元にない場合は最初にダウンロードし、BitKeeper のフリークライアントをインストールします。クライアントは http://www.bitmover.com/bk-client2.0.shar から入手できます。BitKeeper フリークライアントをビルドするには gccmake、および BitKeeper フリークライアントを使用するには patchtar が必要です。BitKeeper フリークライアントの旧 1.1 バージョンは動作しませんのでご留意ください !

Unix に BitKeeper クライアントをインストールするには、以下のコマンドを使用します。

shell> /bin/sh bk-client2.0.shar
shell> cd bk-client2.0
shell> make

cc を取得すると:command not found エラーが表示されたら、make を実行する前に以下のコマンドを実行します。

shell> make CC=gcc

上記のステップでユーティリティ bkf が作成されます。それが BitKeeper フリークライアントです。BitKeeper フリークライアントをメインのクライアントと同じように使用できます。bkf に関する詳細は、以下を使用します。

shell> bkf --help

BitKeeper クライアントを Windows にインストールするには、以下の説明書を使用します。

  1. Cygwin を http://cygwin.com からダウンロードしてインストールします。

  2. patchtargcc および make が Cygwin でインストールされていることを確認します。.各コマンドに which gcc を発行してこれをテストします。必要なツールがインストールされていない場合、Cygwin のパッケージ マネージャを実行して、必要なツールを選択してインストールします。

  3. BitKeeper フリークライアントのインストールには、上記の Unix と同じようなインストールを行います。

BitKeeper フリークライアントの出荷にはソースコードが同梱されています。そのフリークライアントで利用できる説明資料はそのソースコードのみです。

BitKeeper クライアントをインストールすると、MySQL 開発ソースのツリーにアクセスできます。

  1. 使用するディレクトリにロケーションを変更し、以下のコマンドを使用して MySQL 5.1 バージョンのローカルのコピーを取ります。

    shell> bkf clone bk://mysql.bkbits.net/mysql-5.1 mysql-5.1
    

    上記の例で、ソースツリーが現在のディレクトリの mysql-5.1/ のサブディレクトリに設定されます。

    ソースツリーの最初のダウンロードは、接続の速度によって多少時間がかかります。気長にお待ちください。

  2. 次のステップのコマンドを実行するには GNU makeautoconf 2.58 (あるいはそれ以降)、automake 1.8、libtool 1.5、およびm4 が必要です。オペレーティング システムの多くはそれぞれの make の実装を備えているとはいえ、予想外のエラーメッセージでコンパイルに失敗する確率は高いといえます。ですから、GNU make (gmake の名前の時もある) を使用することを強くお勧めします。

    幸運にも、多くのオペレーティング システムは GNU toolchain を実装しているか、あるいはこれらをインストールできるパッケージを提供しています。ほとんどの場合、それらは以下のロケーションからダウンロードすることもできます。

    MySQL 5.1 を設定するには、GNU bison も必要です。できる限り最初バージョンの bison を使用してください。バージョン 1.75 とバージョン 2.1 は動作確認が取れています。bison 1.875 には問題があることが報告されています。問題に遭遇したら、以前のバージョンよりは最近のバージョンにアップグレードするほうがよいでしょう。bison 1.75 以前のバージョンではこのエラーあるかも知れません。

    sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
    

    注:テーブルの最大サイズを実際には超えていなくても、bison の旧バージョンのバグでエラーが発生します。

    以下の例はソースツリーの設定に必要な一般的なコマンドを示したものです。最初の cd コマンドはロケーションをツリーの一番上のレベルに変更し、mysql-5.1 を適切なディレクトリ名に置き換えます。2 番目の行は (storage/innobase 用) は MySQL 5.1.12 以前のバージョンにのみ必要です。.

    shell> cd mysql-5.1
    shell> (cd storage/innobase; autoreconf --force --install)
    shell> autoreconf --force --install
    shell> ./configure  # Add your favorite options here
    shell> make
    

    あるいは BUILD/autorun.sh を以下のコマンドのシーケンスとして使用できます。

    shell> aclocal; autoheader
    shell> libtoolize --automake --force
    shell> automake --force --add-missing; autoconf
    shell> (cd storage/innobase; aclocal; autoheader; autoconf; automake)
    

    ディレクトリを storage/innobase ディレクトリに変更するコマンドラインは InnoDB ストレージ エンジンの設定に使用されます。InnoDB のサポートが必要ない場合にはこの行を削除できます。

    :MySQL 5.1 以降では、ストレージ エンジン専用のコードは storage ディレクトリに移動されています。例えば、InnoDB コードは現在 storage/innobase にあり NDBCluster コードは storage/ndb にあります。

    このステージで予想外の問題が発生した場合には、libtool が間違いなくインストールされているか確認します。

    弊社の標準設定のスクリプト一覧は BUILD/ サブディレクトリにあります。BUILD/compile-pentium-debug スクリプトを使用するほうが上述の shell コマンドよりも使い勝手がいいことがお分かりかと思います。異なるアーキテクチャでのコンパイルでは、Pentium 専用のフラグを削除してスクリプトを変更します。

  3. ビルドが終了したら、make install を実行します。この実行は量産マシンでは注意してください。そのコマンドによって実際のリリースのインストールがオーバーライドされる場合があります。MySQL を別にインストールしている場合には、./configure--prefix--with-tcp-port、および --unix-socket-path オプションに対して量産サーバに使用した値と異なる値で実行することをお勧めします。

  4. インストールしたら色々試し新機能をクラッシュさせてみてください。make test の実行から始めてみてください。項25.1.2. 「MySQL Test Suite」 参照。

  5. make 段階になっても、ディストリビューションのコンパイルができない場合は、項1.7. 「質問またはバグの報告」 の説明に従ってその問題を弊社のバグ データベースに入力お願いします。.必要な GNU のツールの最新バージョンをインストールして、弊社の設定ファイルの処理中にクラッシュする場合には、その件も併せてご連絡お願いします。しかし、aclocal を実行して command not found エラーが発生した場合あるいは同様の問題が発生した場合には、レポートしないでください。その代わり、必要なすべてのツールがインストールされ shell がパスを見つけられるように PATH 変数が正しく設定されているか確認してください。

  6. ソースツリーを取得するためにレポジトリを最初に bkf でコピーしたら、pull オプションを使用して定期的にローカルのコピーを更新する必要があります。レポジトリ設定後にこれを行う時には、以下のコマンドを使用します。

    shell> bkf pull
    
  7. ツリーの変更セットのコマンドを changes オプション使用して bkf を実行すると確認できます。

    shell> bkf changes

    次の bkf pull と一緒に使用する変更リストを取得するには

    shell> bkf changes -R

    特定の変更セット (CSETID) のパッチ ファイルを取得するには、以下を使用

    shell> bkf changes -vvrCSETID

    疑問に思う diffs あるいはコードが表示された場合には、MySQL internals メーリング リストにいつでもメールしてください。項1.6.1. 「MySQL メーリング リスト」 参照。また、何でもいいですから何かよいアイデアが浮かんだ場合には、パッチと一緒にメールを上記のメーリング リストに送ってください。

オンラインでも変更セット、コメント、およびソースコードをブラウズできます。MySQL 5.1 のこの情報をブラウズするには、http://mysql.bkbits.net:8080/mysql-5.1 に進みます。

2.9.4. MySQL のコンパイルに関する問題

すべての MySQL プログラムの gcc による Solaris あるいは Linux のコンパイルは警告なしのクリーンな形で行われます。他のシステムは、システムに含まれるファイルの違いによって警告が出る場合もあります。MIT-pthreads を使用した場合の警告については 項2.9.5. 「MIT-pthreads ノート」 を参照してください。他の問題に関しては以下のリストをチェックしてください。

多くの問題の解決には再設定が含まれます。再設定が必要な場合には、以下の備考を参照します。

  • configure を前の実行後に実行する場合、その前に実行中に集められた情報を使用する場合があります。この情報は config.cache に保存されます。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
    

    問題は gccsql_yacc.cc をインライン機能でコンパイルするには非常に大きなメモリが必要だということです。configure--with-low-memory オプションで実行してみます。

    shell> ./configure --with-low-memory
    

    このオプションはgcc を使用しているときには -fno-inline をコンパイル行に追加し、何か他のものを使用している場合には-O0 を追加します。多分大丈夫だろうと思われる十分なメモリとスワップ スペースがある場合は、--with-low-memory オプションを試してみる必要があります。この問題は十分なハードウェア設定のシステムでも発生するとこが観察されており、--with-low-memory オプションで通常その問題を修正できます。

  • デフォルトでは、configurec++ をコンパイラ名として使用し、GNU c++-lg++ にリンクします。gcc を使用している時に、その振る舞いにより設定中に以下のような問題が発生します。

    configure: error: installation or configuration problem:
    C++ compiler cannot create executables.
    

    また g++libg++、あるいはlibstdc++ に関連したコンパイル中にも問題が起こる場合もあります。

    これらの問題の一つに g++ がないか、あるいは g++ があっても libg++、あるいは libstdc++ がないということです。config.log ファイルをご覧ください。その中に C++ コンパイラが機能しなかったまさにその理由が書いてあるはずです。これらの問題を回避するには、gcc を C++ コンパイラとして使用します。環境変数を CXX から "gcc -O3" に設定してみてください。.例えば、

    shell> CXX="gcc -O3" ./configure
    

    gcc が C++ ソース ファイルを g++ 同様ににコンパイルするためこれは機能します。しかしデフォルトでは libg++ あるいはlibstdc++ ではリンクしません。

    これらの問題の別の解決方法は g++libg++、および libstdc++ をインストールすることです。しかし、libg++ あるいは libstdc++ を MySQL に使用しないようお勧めします。これらを使用してものなんの効果もないばかりでなくなく単に mysqld のバイナリのサイズを大きくするだけです。これらのバージョンのいくつかでこれまで MySQL ユーザーで予想外な問題が発生しています。

  • コンパイルが以下のいずれかで失敗した場合、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 の環境変数に追加します。environment variables.コンパイラ名もこのように CC および CXX を使用して指定できます。.例えば、

    shell> CC=gcc
    shell> CFLAGS=-O3
    shell> CXX=gcc
    shell> CXXFLAGS=-O3
    shell> export CC CFLAGS CXX CXXFLAGS
    

    様々なシステムで有効性が確認されているフラグのリストは、項2.1.2.5. 「MySQL AB でコンパイルした MySQL バイナリ」 を参照してください。

  • mysqld をコンパイル中に以下のようなエラーが発生した場合、configureaccept()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
    

    XXXsize_t あるいは int にオペレーティングシステムに従って変更します。(configureconfig.h を生成しますので、configure を実行するたびにこれを行います。)

  • sql_yacc.cc ファイルはsql_yacc.yy から生成されます。.通常は、ビルド プロセスは sql_yacc.cc を作成する必要はありません。というのは、MySQL は事前に生成されたコピーがあるからです。しかし、それを再度作成する必要がある場合、この問題に遭遇する場合もあります。

    "sql_yacc.yy", line xxx fatal: default action causes potential...
    

    これは yacc のバージョンに問題があることを意味しています。bison (yacc の GNU バージョン) をインストールし、代わりにそれを使用する場合もあります。

  • Linux 3.0 のDebian では、デフォルトの mawk の代わりに gawk をインストールする必要があります。

  • mysqld あるいは MySQL クライアントのデバッグの必要がある場合、configure--with-debug オプションで実行し、次にコンパイルして新しいクライアント ライブラリにリンクします。Debugging a MySQL Client 参照。

  • Linux (例えば、SuSE Linux 8.1 あるいは Red Hat Linux 7.3) のコンパイルで以下のようなエラーが発生した場合、多分g++ がインストールされていません。

    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 スクリプトが g++ (GNU C++ コンパイラ) を使用して引数の正しい数字を決めようとします。g++ がインストールされていないとこのテストでは正しい結果は出ません。この問題を回避する 2 つの方法があります。

    • GNU C++ g++ がインストールされていることを確認してください。Linux のディストリビューションでは、必要なパッケージは gpp を呼ばれており、他では gcc-c++ となります。

    • CXX 環境変数を gcc に設定して gcc を C++ コンパイラとして使用します。

      export CXX="gcc"
      

    それらのいずれかの変更を加えた後に configure 再度実行します。

2.9.5. MIT-pthreads ノート

この項では MIT-pthreads を使用した幾つかの問題について説明します。.

Linux には、MIT-pthreads は使用できません。その代わり実装した LinuxThreads を使用します。項2.13.1. 「Linux の注釈」 参照。

システムがネイティブのスレッドをサポートしていない場合、MIT-pthreads パッケージを使用して MySQL を構築する必要があります。これには旧 FreeBSD システム、SunOS 4.x、Solaris 2.4 およびそれ以前、並びにその他幾つかが含まれます。項2.1.1. 「MySQL Community Server がサポートしているオペレーティング システム」 参照。

MIT-pthreads は MySQL 5.1 のソース ディストリビューションには含まれていません。このパッケージが必要な場合、http://dev.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz から別途ダウンロードします。

ダウンロードしたら、このソース アーカイブを MySQL ソース ディレクトリの最上段に抽出します。抽出すると mit-pthreads のサブディレクトリが作成されます。.

  • ほとんどのシステムで、MIT-pthreads を configure--with-mit-threads オプションで実行すると使用できます。

    shell> ./configure --with-mit-threads
    

    このコードへの変更を最小限に抑えるために、MIT-pthreads を使用したソース以外のディレクトリでのビルドはサポートしていません。

  • MIT-pthreads の使用を決定するチェックはサーバのコードを処理する設定プロセスの実行中にのみ行われます。--without-server を使用してクライアント コードのみのビルドにディストリビューションを設定した場合、クライアントは MIT-pthreads を使用するどうかを判断できないため、デフォルトでUnix ソケット接続を使用します。なぜなら、Unix ソケットはプラットフォームによっては MIT-pthreads では動作しないため、クライアントのプログラムを実行する際、-h あるいは --hostlocalhost 以外の値で使用する必要があります。

  • MySQL を MIT-pthreads でコンパイルした場合、システム ロックはパフォーマンス上の理由でデフォルトで無効になります。システムロックを --external-locking オプションで使用するようにサーバに指定できます。2 台の MySQL サーバを同じデータ ファイルに稼動する場合にのみこれは必要ですが、いずれにしろこのやり方は推奨していません。

  • スレッド 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-pthread と連動する readline はまだありません。(これは必要ありませんが、興味あるユーザーがいるかも知れません。)

2.9.6. Windows にソースから MySQL をインストールする

これらの説明書は Windows上でのソースからの MySQL 5.1 用バイナリのビルド方法を網羅しています。説明書では標準のソース ディストリビューションあるいは最新の開発ソースを含む BitKeeper ツリーからのバイナリのビルドを説明します。

:これらの説明書は Microsoft 社の Windows 上で最新のソース ディストリビューションあるいは BitKeeper ツリーを MySQL でテストするユーザーに限定したものです。.MySQL AB ではソースからユーザー自身がビルドした MySQL サーバを量産環境で使用することはお勧めしていません。通常は、MySQL AB で Windows 専用に最適なパフォーマンスでビルドした MySQL のプリコンパイル版のバイナリのディストリビューションを使用されるのがベストです。バイナリ ディストリビューションのインストール手順は 項2.3. 「Windows に MySQL をインストールする」 を参照してください。.

MySQL を Windows 上でソースからビルドするには、以下のシステム、コンパイラ、およびソース要件を満たす必要があります。

  • Windows 2000、Windows XP、あるいは以降のバージョンWindows Vista は Microsoft 社が Visual Studio 2005 を Vista で検証するまではサポートしていません。

  • CMake は http://www.cmake.org からダウンロードできます。インストール後に、パスを変更して cmake バイナリを含めます。

  • Microsoft Visual C++ 2005 Express Edition、Visual Studio .Net 2003 (7.1)、あるいは Visual Studio 2005 (8.0) コンパイラ システム。

  • Visual C++ 2005 Express Edition を使用している場合、適切な Platform SDK もインストールする必要があります。詳細および利用できる様々な Windows プラットフォームのダウンロードのリンクは http://msdn.microsoft.com/platformsdk/ で利用できます。

  • BitKeeper ツリーからのコンパイルあるいは parser に変更を加える場合には、Windows用 bison が必要です。それは http://gnuwin32.sourceforge.net/packages/bison.htm からダウンロードできます。「Complete package, excluding sources」 のラベルのパッケージをダウンロードします。パッケージをインストールしたら、パスを変更して bison バイナリを含め、このバイナリに Visual Studio からアクセスできることを確認します。

  • テスト スクリプトを実行したり、コンパイルしたバイナリおよびサポート ファイルを Zip アーカイブにパッケージするには Cygwin が必要になる場合があります。(Cygwin はディストリビューションをテストあるいはパッケージする際にのみ必要で、ビルドには必要ありません。.)Cygwin は http://cygwin.com から入手できます。

  • 3GB から 5GB のディスク容量

正確なシステム要件は以下にあります。http://msdn.microsoft.com/vstudio/Previous/2003/sysreqs/default.aspx および http://msdn.microsoft.com/vstudio/products/sysreqs/default.aspx

Windows 用の MySQL ソース ディストリビューションも必要です。それは 2 つの方法で取得できます。

何か期待通りに動作しない、あるいは Windows を使用した現在のビルド プロセスの改善ための助言が必要な場合には、win32 メーリング リストにメッセージを送ってください。項1.6.1. 「MySQL メーリング リスト」 参照。

2.9.6.1. CMake および Visual Studio を使用したソースからの MySQL のビルド

MySQL をビルドするには以下の手順に従います。

  1. パッケージのディストリビューションからインストールする場合、作業ディレクトリ (例えば、C:\workdir) を作成し、WinZip あるいは .zip ファイルを読める別の Windows のツールを使用してソース ディストリビューションを作業ディレクトリに解凍します。このディレクトリは作業ディレクトリでその手順は以下のようになります。

  2. BitKeeper ツリーからインストールする場合、そのツリーのルート ディレクトリは作業ディレクトリで以下の手順に従います。

  3. コマンド シェルを使用するには、作業ディレクトリをナビゲートして以下のコマンドを実行します。

    C:\workdir>win\configure options
    

    以下のオプションが利用できます。

    • WITH_INNOBASE_STORAGE_ENGINE:InnoDB ストレージ エンジンを有効にします。

    • WITH_PARTITION_STORAGE_ENGINE:ユーザー定義のパーテッション化を有効にします。

    • WITH_ARCHIVE_STORAGE_ENGINE:ARCHIVE ストレージ エンジンを有効にます。

    • WITH_BLACKHOLE_STORAGE_ENGINE:BLACKHOLE ストレージ エンジンを有効にします。

    • WITH_EXAMPLE_STORAGE_ENGINE:EXAMPLE ストレージ エンジンを有効にします。

    • WITH_FEDERATED_STORAGE_ENGINE:FEDERATED ストレージ エンジンを有効にします。

    • __NT__:名前付きパイプのサポートを有効にします。

    • MYSQL_SERVER_SUFFIX=suffix:サーバ接尾辞、デフォルトはなし

    • COMPILATION_COMMENT=comment:Server コメント、デフォルトは 「ソース ディストリビューション」

    • MYSQL_TCP_PORT=port:サーバ ポート、デフォルトは 3306。

    • DISABLE_GRANT_OPTIONS:--bootstrap--skip-grant-tables、および --init-file オプションをmysqld に対して無効にします。このオプションは MySQL 5.1.15 から利用できます。

    例えば (一つの行にコマンドを入力します):

    C:\workdir>win\configure WITH_INNOBASE_STORAGE_ENGINE
                 WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
    
  4. 作業でディレクトリから、インストールした Visual Studio のバージョンに基づいて win\build-vs8.bat あるいは win\build-vs71.bat ファイルを実行します。スクリプトが CMake を実行し、mysql.sln のソリューション ファイルを生成します。

    また win\build-vs8_x64.bat を使用して 64-ビット バージョンの MySQL をビルドできます。しかし、64-ビット バージョンを Visual Studio Express Edition ではビルドできません。Visual Studio 2005 (8.0) あるいはそれ以上を使用する必要があります。

  5. 作業ディレクトリで、生成された mysql.sln ファイルを Visual Studio で開いて、Configuration メニューで適切な設定を選択します。メニューには デバッグリリースRelwithDebInfoMinRelInfo オプションがあります。次に ソリューション > ビルド を選択してソリューションをビルドします。

    このステップで使用した設定を覚えておきます。これは後でスクリプトを実行するときに重要になります。というのは、スクリプトはどの設定になっているか知る必要があるからです。

  6. サーバのテスト。上記の手順でビルドしたサーバの MySQL ベース ディレクトリおよびデータ ディレクトリはデフォルトで C:\mysql および C:\mysql\data になります。サーバをソースのツリー ルートおよびそのデータディレクトリをベースのディレクトリおよびデータ ディレクトリとして使用してテストするには、サーバにそれらのパス名を指定する必要があります。これは --basedir オプションおよび --datadir オプションのコマンドライン、あるいはオプション ファイルで適切なオプションを設定することで指定できます。(項3.3.2. 「オプションファイルの使用」 参照。)使用したい既存のデータ ディレクトリがどこかにある場合、代わりにそのパス名を指定します。

    サーバをスタンドアロンで稼動している場合あるいは設定上サービス ベースで運用している場合、mysql のインターラクティブ コマンドライン ユーティリティからそれに接続します。

    標準のテスト スクリプト、mysql-test-run.pl を実行することもできます。このスクリプトは Perl で書かれているので、それを実行するには Cygwin あるいは ActiveState Perl のいずれかが必要です。またこのスクリプトに必要なモジュールをインストールしなければならない場合もあります。テスト スクリプトを実行するには、ロケーションを作業ディレクトリの mysql-test ディレクトリに変更し、 MTR_VS_CONFIG 環境変数を以前選択した (あるいは --vs-config オプションを使用し) 設定を選択して、mysql-test-run.pl を実行します。例えば (Cygwin および bash シェルを使用してl):

    shell> cd mysql-test
    shell> export MTS_VS_CONFIG=debug
    shell> ./mysqltest-run.pl --force --timer
    shell> ./mysqltest-run.pl --force --timer --ps-protocol
    

ビルドしたプログラムが正常に機能していることに満足したら、サーバを停止します。この段階でディストリビューションをインストールできます。インストールを行う一つの方法として MySQL のソース ディストリビューションの scripts ディレクトリにある make_win_bin_dist スクリプトを使用する方法があります (項4.5.1. 「make_win_bin_dist — Package MySQL 配布 (ZIP アーカイブ)」 参照)これはシェル スクリプトですので、これを使用する際は Cygwin をインストールする必要があります。それによりビルドした実行ファイルの Zip アーカイブを作成し、 MySQL をインストールするロケーションに解凍するファイルをサポートします。

ディレクトリやファイルを直接コピーして MySQL をインストールすることもできます。

  1. MySQL をインストールするディレクトリを作成します。例えば、C:\mysql にインストールするには、このコマンドを使用します。

    C:\> mkdir C:\mysql
    C:\> mkdir C:\mysql\bin
    C:\> mkdir C:\mysql\data
    C:\> mkdir C:\mysql\share
    C:\> mkdir C:\mysql\scripts
    

    他のクライアントをコンパイルしてそれらを MySQL にリンクさせるには、さらに幾つかのディレクトリを作成する必要があります。

    C:\> mkdir C:\mysql\include
    C:\> mkdir C:\mysql\lib
    C:\> mkdir C:\mysql\lib\debug
    C:\> mkdir C:\mysql\lib\opt
    

    MySQL をベンチマークするには、このディレクトリを作成します。

    C:\> mkdir C:\mysql\sql-bench
    

    ベンチマークするには Perl のサポートが必要です。項2.15. 「Perl のインストールに関する注釈」 参照。

  2. 作業ディレクトリから、以下のディレクトリを C:\mysql ディレクトリにコピーします。

    C:\> cd \workdir
    C:\workdir> copy client_release\*.exe C:\mysql\bin
    C:\workdir> copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
    C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
    C:\workdir> xcopy share\*.* C:\mysql\share /E
    

    他のクライアントをコンパイルしてそれらを MySQL にリンクさせるには、幾つかのライブラリとヘッダーファイルもコピー必要があります。

    C:\workdir> copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
    C:\workdir> copy lib_debug\libmysql.* C:\mysql\lib\debug
    C:\workdir> copy lib_debug\zlib.* C:\mysql\lib\debug
    C:\workdir> copy lib_release\mysqlclient.lib C:\mysql\lib\opt
    C:\workdir> copy lib_release\libmysql.* C:\mysql\lib\opt
    C:\workdir> copy lib_release\zlib.* C:\mysql\lib\opt
    C:\workdir> copy include\*.h C:\mysql\include
    C:\workdir> copy libmysql\libmysql.def C:\mysql\include
    

    MySQL をベンチマークするには、以下が必要です。

    C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E
    

インストールしたら、バイナリの Windows ディストリビューションと同じようにサーバを設定して起動します。項2.3. 「Windows に MySQL をインストールする」 参照。

2.9.6.2. Borland C++ を使用したソースからの MySQL のビルド

MySQL Windows のソースを Borland C++ 5.02 でコンパイルできます。(Windows のソースはMicrosoft VC++ 用のプロジェクトしか含んでいないため、Borland C++ の場合にはご自身でプロジェクトファイルを作成する必要があります。

Borland C++ の既知の問題の一つは、VC++ とは構成の配列が異なっていることです。このとは、デフォルトの libmysql.dll ライブラリ (VCC++ でコンパイルした) を Borland C++ に使用すると問題が発生するということを意味します。この問題を避けるには、mysql_init()NULL で引数としてコールするだけで、事前に割り当てられた MYSQL 構成としてコールしないことです。

2.9.7. Windows で MySQL クライアントをコンパイルする

ソース ファイルには、my_global.hmysql.h の前に含める必要があります。

#include <my_global.h>
#include <mysql.h>

my_global.h には Windows でプログラムをコンパイルするために必要な Windows 互換 (windows.h など) の他のファイルが含まれています。

コードをオンデマンドで libmysql.dll にロードする単なるラッパーである動的な libmysql.lib ライブラリにリンクさせるか、あるいは静的な mysqlclient.lib ライブラリにリンクできます。

MySQL クライアント ライブラリはスレッド ライブラリとしてコンパイルされますので、コードもマルチ スレッドとしてコンパイルする必要があります。

2.10. インストール後の設定とテスト

MySQL のインストール後に、処理しなければならない問題が幾つかあります。例えば、Unix では、データ ディレクトリを初期化して MySQL グラント テーブルを作成する必要があります。すべてのプラットフォームで、重要なセキュリティの問題はグラント テーブルの最初のアカウントにはパスワードがないということです。MySQL サーバへの権限のないアクセスを妨げるにはパスワードを割り当てる必要があります。オプションで、タイム ゾーン テーブルを作成して名前付きタイム ゾーンの認識を有効にできます。

次項以降では、Windows システムおよび Unix システムに特定したインストール後の手順について説明します。別のセクション、項2.10.2.3. 「MySQL サーバの起動とトラブルシューティング」 ではすべてのプラットフォームでのサーバの起動時の問題について説明します。項2.10.3. 「最初の MySQL アカウントの確保」 もすべてのプラットフォームに関する説明です。MySQL アカウントをアカウントにパスワードを割り当てて適切に保護していることを確認するには以下の手順に従います。

新たにユーザー アカウントを作成する用意ができたら、項4.7. 「MySQL アクセス権限システム」 および 項4.8. 「MySQL ユーザ アカウント管理」 にある MySQL アクセス管理システムに関する情報およびアカウント管理を参照してユーザーアカウントを設定します。

2.10.1. Windows のインストール後のプロシージャ

Windows では、データ ディレクトリおよびグラント テーブルは作成する必要はありません。MySQL の Windows のディストリビューションにはデータ ディレクトリの mysql データベースに初期化されたアカウント セットのグラント テーブルが含まれています。Unix で実行した mysql_install_db スクリプトを実行する必要はありません。パスワードの場合、MySQL を Windows のインストール ウイザードでインストールした場合、そのインストールが済むとそのアカウントに対するパスワードの割り当ては済んでいます。(項2.3.3. 「MySQL インストール ウイザードを使用する」 参照。)そうでない場合には、項2.10.3. 「最初の MySQL アカウントの確保」 にあるパスワード割り当て手順を使用します。

パスワードを設定する前に、クライアント プログラムを実行してサーバに接続できるかまたは適切に動作しているか確認する必要があります。サーバが稼動していること (項2.3.9. 「サーバを最初に起動する」 参照) を確認し、次に以下のコマンドを発行してサーバから情報を取り出せるか確認します。その出力は以下に示すものと類似しているはずです。

C:\> C:\mysql\bin\mysqlshow
+-----------+
| Databases |
+-----------+
| mysql     |
| test      |
+-----------+

C:\> C:\mysql\bin\mysqlshow mysql
Database: mysql
+---------------------------+
|          Tables           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

C:\> C:\mysql\bin\mysql -e "SELECT Host,Db,User FROM db" mysql
+------+-------+------+
| host | db    | user |
+------+-------+------+
| %    | test% |      |
+------+-------+------+

サービスをサポートしている Windows バージョンを使用していて、MySQL サーバを Windows の自動時に起動する場合には、項2.3.11. 「Windows のサービスとして MySQL を起動する」 を参照してください。.

2.10.2. Unix のインストール後のプロシージャ

MySQL を Unix にインストールしたら、グラント テーブルを初期化し、サーバを起動し、サーバが期待通りに動作しているか確認します。サーバをシステムの起動、停止と共に自動的に起動あるいは停止させることもできます。グラント テーブルのアカウントにパスワードを割り当てることもできます。

Unix では、グラント テーブルは mysql_install_db プログラムで設定します。インストールの仕方によっては、このプログラムを自動的に実行することができます。

  • MySQL を Linux に RPM ディストリビューションを使用してインストールする場合、サーバの RPM が mysql_install_db を実行します。

  • MySQL を Mac OS X に PKG ディストリビューションを使用してインストールする場合、インストーラが mysql_install_db を実行します。

そうでない場合は、ご自身で mysql_install_db を実行します。

以下のプロシージャではグラント テーブルの初期化 (初期化されていない場合)、次にサーバの起動手順について説明します。同時にサーバへのアクセスおよびサーバの正常動作をテストする幾つかのコマンドも示してあります。サーバの自動による起動および停止に関する情報は、項2.10.2.2. 「MySQL を自動的に起動・停止する」 を参照してください。

プロシージャを完了してサーバを動作させたら、mysql_install_db で作成したアカウントにパスワードを割り当てます。その手順は、項2.10.3. 「最初の MySQL アカウントの確保」 にあります。

以下の例では、サーバはmysql のログイン アカウントのユーザーID で動作します。これはそのようなアカウントが存在することを前提にしています。アカウントがない場合アカウントを作成するか、あるいはサーバの稼動に使用する別の既存のログイン アカウントで置き換えます。

  1. ロケーションを MySQL の最上段のディレクトリに変更すると、ここでは BASEDIR になります。

    shell> cd BASEDIR
    

    BASEDIR/usr/local/mysql あるいは /usr/local のようなものです。.以下のステップはユーザーがこのディレクトリにあるものとの前提に基づいたものです。

  2. 必要に応じて mysql_install_db プログラムを実行して、ユーザーのサーバ接続へのアクセス方法を決定する権限を含む最初の MySQL グラント テーブルを設定します。インストールのプロシージャではそのプログラムが起動しないディストリビューションを使用している場合にこの手順が必要です。

    一般的には、mysql_install_db はMySQL を最初にインストールする際にのみ実行する必要があるので、既存のインストールをアップグレードした場合にはこのステップをスキップできます。しかし、mysql_install_db は既存の権限テーブルを上書きしないので、どの環境でもこれを実行するのが安全かも知れません。

    グラント テーブルを初期化するには、mysql_install_dbbin にあるかあるいは scripts ディレクトリにあるかによって以下のコマンドのいずれかを使用します。

    shell> bin/mysql_install_db --user=mysql
    shell> scripts/mysql_install_db --user=mysql
    

    mysql_install_db のスクリプトはサーバのデータ ディレクトリを作成します。サーバのディレクトリはすべてのデータベース権限および MySQL のテストに使用する test データベースを保持する mysql データベースのディレクトリを作成します。そのスクリプトはまた root および匿名ユーザーアカウントの権限テーブルのエントリを作成します。それらのアカウントには最初はパスワードはありません。最初の権限に関する説明は 項2.10.3. 「最初の MySQL アカウントの確保」 にあります。これらの権限では一時的に、MySQL root ユーザーが何かをしたり、誰でも test 名の下にデータベースを作成して使用したり、あるいは test_ 名で動作できるようになっています。

    あとでサーバを起動した時にサーバがそれらのアクセスを読んだり書いたりできるようにデータベースのディレクトリおよびファイルが mysql のログイン アカウントの所有になっていることを確認しておくことが重要です。これを確認するには、--user オプションは mysql_install_dbroot として実行する際に以下のように使用される必要があります。または、mysql としてログインする際にそのスクリプトを実行する必要があります。その場合 --user オプションをコマンドから除外できます。

    mysql_install_db は幾つかのテーブルを mysql データベースに作成します。その中には userdbhosttables_privcolumns_privfunc、およびその他が含まれます。これらのテーブルの完全なリストおよびその説明は、項4.7. 「MySQL アクセス権限システム」 を参照してください。

    test データベースが必要ない場合には、サーバの起動後に mysqladmin -u root drop test でそれを削除できます。

    この段階で mysql_install_db で問題に遭遇した場合、項2.10.2.1. 「mysql_install_db 実行中の問題」 を参照してください。

  3. MySQL サーバを起動する

    shell> bin/mysqld_safe --user=mysql &
    

    MySQL サーバを権限のない (非root) ログイン アカウントで起動することが重要です。これを確認するには、--user オプションは mysql_safe をシステム root として実行する際以下のように使用される必要があります。または、mysql としてログインする際にそのスクリプトを実行する必要があります。その場合 --user オプションをコマンドから除外できます。

    MySQL を権限のないユーザーとして動作させるための詳細は 項4.6.5. 「ユーザによる MySQL の実行」 にあります。

    このステップに進む前にグラント テーブルを作成しなかった場合には、サーバを起動すると以下のメッセージがエラーのログ ライルに表示されます。

    mysqld: Can't find file: 'host.frm'
    

    サーバの起動時に他の問題が発生した場合には、項2.10.2.3. 「MySQL サーバの起動とトラブルシューティング」 を参照してください。

  4. mysqladmin を使用してサーバが動作していることを確認します。以下のコマンドにはサーバの起動および接続をチェックする簡単なテストが含まれています。

    shell> bin/mysqladmin version
    shell> bin/mysqladmin variables
    

    mysqladmin version の出力はプラットフォームおよび MySQL のバージョンによって多少異なりますが以下に類似します。

    shell> bin/mysqladmin version
    mysqladmin  Ver 14.12 Distrib 5.1.15-beta, for pc-linux-gnu on i686
    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          5.1.15-beta-Max
    Protocol version        10
    Connection              Localhost via UNIX socket
    UNIX socket             /var/lib/mysql/mysql.sock
    Uptime:                 14 days 5 hours 5 min 21 sec
    
    Threads: 1  Questions: 366  Slow queries: 0
    Opens: 0  Flush tables: 1  Open tables: 19
    Queries per second avg: 0.000
    

    mysqladmin の他に機能については、それを --help オプションで起動します。

  5. サーバをシャットダウンできることを確認します。

    shell> bin/mysqladmin -u root shutdown
    
  6. サーバを再度起動できるか確認します。mysqld_safe を使用するかあるいはmysqld 直接実行して起動を確認します。例えば、

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

    mysqld_safe が失敗したら、項2.10.2.3. 「MySQL サーバの起動とトラブルシューティング」 を参照します。

  7. 簡単なテストをしてサーバから情報を取り出せるか確認します。その出力は以下に示すものと類似しているはずです。

    shell> bin/mysqlshow
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    | test      |
    +-----------+
    
    shell> bin/mysqlshow mysql
    Database: mysql
    +---------------------------+
    |          Tables           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | func                      |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | host                      |
    | proc                      |
    | procs_priv                |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    
    shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
    +------+--------+------+
    | host | db     | user |
    +------+--------+------+
    | %    | test   |      |
    | %    | test_% |      |
    +------+--------+------+
    
  8. sql-bench ディレクトリ (MySQL インストール ディレクトリ) に MySQL の異なるプラットフォームでの違いを比較したベンチマーク スイートがあります。ベンチマーク スイートは Perl で書かれています。それには様々なデータベース、および他の幾つかの Perl モジュールへのデータベース非依存型インターフェースを提供する Perl DBI が必要です。

    DBI
    DBD::mysql
    Data::Dumper
    Data::ShowTable
    

    これらのモジュールは CPAN (http://www.cpan.org/) で入手できます。項2.15.1. 「Unix に Perl をインストールする」 も参照してください。

    sql-bench/Results ディレクトリには異なるデータベースおよびプラットフォームでの多くの動作結果が含まれています。すべてのテストを行うには、以下のコマンドを実行します。

    shell> cd sql-bench
    shell> perl run-all-tests
    

    sql-bench ディレクトリがない場合、多分 MySQL を ソースの RPM ではない RPM ファイルからインストールしています。(ソースの RPM には sql-bench ベンチマーク ディレクトリが含まれています。.)この場合、それを使用する前に最初にベンチマーク スイートをインストール必要があります。mysql-bench-VERSION-i386.rpm の名前の個別のベンチマーク RPM ファイルがあり、その中にはベンチマークのコードおよびデータが含まれています。

    ソースのディストリビューションの場合には、実行できるテストも tests サブディレクトリにあります。例えば、auto_increment.tst を実行するには、このコマンドをソース ディストリビューションの最上段のディレクトリから実行します。

    shell> mysql -vvf test < ./tests/auto_increment.tst
    

    テストの予想結果は ./tests/auto_increment.res ファイルにあります。

  9. この段階では、サーバが稼動していなければなりません。しかし、最初の MySQL アカウントにはどれもパスワードがないため、項2.10.3. 「最初の MySQL アカウントの確保」 の手順に従ってパスワードを割り当てる必要があります。

MySQL 5.1 のインストール プロシージャが mysql データベースでタイム ゾーン テーブルを作成します。しかし、テーブルは 項4.10.8. 「MySQL サーバのタイム ゾーン サポート」 の手順に従って手動で構成する必要があります。

2.10.2.1. mysql_install_db 実行中の問題

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

権限のテーブルを再度作成するには、稼動している mysqld サーバを停止します。次にデータ ディレクトリの mysql ディレクトリの名前を変更して保存し、次に mysql_install_db を実行します。.お客様の現在のディレクトリが MySQL のインストール ディレクトリで mysql_install_dbbin ディレクトリにあり、データ ディレクトリ名が 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_dbscripts ディレクトリにある場合には、最初のコマンドを 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 を使用しなかった場合は、グラント テーブルを手動で作成しなければならないのみならず、それらを最初に作成しなければなりません。

2.10.2.2. MySQL を自動的に起動・停止する

一般的には mysqld サーバを以下のいずれかで起動します。

  • mysqld を直接実行します。これはプラットフォームで行われます。

  • MySQL サーバを Windows のサービスで稼動します。これはサービスをサポートしている Windows (NT、2000、XP、および 2003 など) で可能です。このサービスでは Windows を起動したときにサーバを自動的に起動する、あるいは手動サービスとして要求に基づいて起動するように設定できます。その手順は、項2.3.11. 「Windows のサービスとして MySQL を起動する」 を参照してください。

  • mysqld_safe を実行すると、mysqld の適切なオプションを判断してそれらのオプションでそれを実行します。このスクリプトは Unix および Unix 様のシステムで使用できます。項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 参照。

  • mysql.server の起動.このスクリプトはシステム V-style 実行ディレクトリを使用しているシステムのシステムの起動時およびシャットダウン時に主に使用されます。それは通常mysql の名前でインストールされます。.mysql.server スクリプトは mysqld_safe を実行してサーバを起動します。項4.3.2. 「mysql.server — MySQL サーバ スタートアップ スクリプト」 参照。

  • Mac OS X では、システムの起動で MySQL を自動的に起動する個別の MySQL 起動アイテムパッケージをインストールできます。起動アイテムは mysql.server を実行するとサーバを起動します。詳細は、項2.5. 「Mac OS X に MySQL をインストールする」 を参照してください。

mysqld_safe および mysql.server スクリプト並びに Mac OS X 起動アイテムでシステムの起動時にサーバを手動、あるいは自動的に起動できます。mysql.server および起動アイテムはサーバを停止することもできます。

mysql.server スクリプトを使用してサーバを手動で起動・停止するには、サーバを start あるいは stop 引数で呼び出します。

shell> mysql.server start
shell> mysql.server stop

mysql.server がサーバを起動する前に、ロケーションを MySQL インストール ディレクトリに変更し、次に mysqld_safe を実行します。サーバを特定のユーザーとして起動するには、適切な user オプションを/etc/my.cnf オプション ファイルの [mysqld] グループにこの項の後で示すように追加します。(バイナリ ディストリビューションの MySQL を標準と異なるロケーションにインストールした場合には mysql.server の編集が必要になる場合があります。mysqld_safe を実行する前にそれを cd に変更して適切なディレクトリに入れます。これを行うと、変更したバージョンの mysql.server は将来 MySQL をアップグレードすると上書きされる場合がありますので、編集したバージョンをインストールできるようにコピーを取っておく必要があります。

mysql.server stop は停止する信号を送ってサーバを停止します。mysqladmin shutdown を実行してサーバを手動で停止することもできます。

サーバ上の MySQL を自動的に起動・停止するには、起動・停止コマンドを /etc/rc* ファイルの適切な場所に加える必要があります。

Linux サーバ RPM パッケージ (MySQL-server-VERSION.rpm) を使用する場合には、mysql.server スクリプトを /etc/init.d ディレクトリに mysql の名前でインストールします。それを手動でインストールする必要はありません。Linux RPM パッケージに関する詳細は、項2.4. 「Linux に MySQL をインストールする」 を参照してください。

ベンダーによっては起動スクリプトをインストールする RPM パッケージを mysqld のような別名で提供している場合もあります。

MySQL をソース ディストリビューションからあるいは mysql.server を自動的にインストールしないバイナリのディストリビューション フォーマットを使用してインストールする場合、それを手動でインストールできます。そのスクリプトは MySQL インストール ディレクトリの support-files ディレクトリあるいは MySQL のソース ツリーにあります。

mysql.server を手動でインストールするには、それを /etc/init.d ディレクトリに mysql の名前でコピーし、次にそれを実行ファイルにします。実行ファイルにするには mysql.server を格納を格納しこれらのコマンドを実行する適切なディレクトリにロケーションを変更します。

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

古い Red Hat システムは /etc/init.d ではなく /etc/rc.d/init.d ディレクトリを使用しています。上記のコマンドを状況に応にて変更します。または、最初に /etc/init.d をシンボリック リンクとして /etc/rc.d/init.d にポイントして作成します。

shell> cd /etc
shell> ln -s rc.d/init.d .

スクリプトをインストールした後、使用しているオペレーティング システムに基づいてシステムの起動時にコマンドを実行できるように有効化します。Linux では、chkconfig を使用します。

shell> chkconfig --add mysql

Linux システムに中には、mysql スクリプトをフルに有効にするには以下のコマンドが必要になる場合があります。

shell> chkconfig --level 345 mysql on

FreeBSD では、起動スクリプトは通常 /usr/local/etc/rc.d/ にあります。.rc(8) のマニュアルではこのディレクトリのスクリプトはそれらのベースの名前が *.sh シェルのファイル名のパターンに一致したときのみ実行できると書いてあります。そのディレクトリの他のファイルあるいはディレクトリは無視されます。換言すれば、FreeBSD では、mysql.server スクリプトを /usr/local/etc/rc.d/mysql.server.sh としてインストールして自動による起動を有効にします。

上記の設定の代案として、オペレーティング システムの中には /etc/rc.local あるいは /etc/init.d/boot.local を使用して起動時に追加のサービスを起動しています。この方法で MySQL を起動するには、以下のようなコマンドを適切な起動ファイルに追加します。

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

他のシステムの起動スクリプトのインストール方法についてはそのオペレーティング システムの説明書をお読みください。

mysql.server のグローバル /etc/my.cnf ファイルにオプションを追加できます。一般的な /etc/my.cnf ファイルは以下のようになります。

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

mysql.server スクリプトは以下のオプションを実行します。basedirdatadir、および pid-file。指定する場合には、それらはコマンドラインではなくオプション ファイルに入れる 必要が あります。 mysql.serverstart および stop をコマンドラインの引数として理解します。

以下のテーブルはどのオプション グループからサーバおよび各起動スクリプトがオプション ファイルを読むか示しています。

スクリプトオプション グループ
mysqld[mysqld], [server], [mysqld-major_version]
mysqld_safe[mysqld], [server], [mysqld_safe]
mysql.server[mysqld], [mysql.server], [server]

[mysqld-major_version][mysqld-5.0] および [mysqld-5.1] の名前のグループが 5.0.x、5.1.x、などのバージョンのサーバによって読まれることを意味しています。この機能は所定のリリース シリーズのサーバによってのみ読まれるオプションを指定するために使用されています。

下位互換の場合、mysql.server[mysql_server] グループも読み込み mysqld_safe[safe_mysqld] グループも読み込みます。しかし、MySQL 5.1 を使用する際は、[mysql.server] および [mysqld_safe] グループを読み込めるようにオプション ファイルをアップグレードする必要があります。

項3.3.2. 「オプションファイルの使用」 を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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 refusedmysqld が使用しようとしている TCP/IP ポートを他のプログラムが使用しています。その際どのプログラムが使用しているかを調べてそれを無効にするか、または mysqld--port オプションで別のポートを指定します。この場合、サーバに TCP/IP 経由で接続する際にクライアント プログラムにポート番号を指定する必要があります。

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

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

127.0.0.1       localhost

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

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

2.10.3. 最初の MySQL アカウントの確保

MySQL インストール プロセスの一環でグラント テーブルを含む mysql データベースを設定します。

  • Windows のディストリビューションには自動的にインストールされる初期化されたグラント テーブルが含まれています。

  • Unix では、グラント テーブルは mysql_install_db プログラムで設定されます。インストール メソッドがお客様に代わってこのプログラムを実行します。その他は手動でそれを実行します。詳細に関しては 項2.10.2. 「Unix のインストール後のプロシージャ」 を参照して下さい。

グラント テーブルは最初の MySQL ユーザーアカウントおよびそれらのアクセス権限を定義します。これらのアカウントは以下のように設定されます。

  • ユーザー名 root を持つアカウントが作成されます。通常とな異なる機能を持つスーパーユーザーのアカウントがあります。最初の root アカウントパスワードは空ですので、誰でも MySQL サーバに rootとして — パスワードなし — で接続できすべての権限を使用できます。

    • Windows では、一つの root アカウントが作成されます。このアカウントではローカル ホストのみから接続できます。Windows のインストーラではオプションでアカウントを作成してインストール中にユーザーが Enable root access from remote machines オプションを選択したときのみどのホストからでも接続できます。

    • Unix では、両方の root アカウントはローカル ホストの接続用です。接続はローカルホストから localhost のホスト名をアカウントの一つに指定するか、あるいは実際のホスト名または他への IP 番号を指定する必要があります。

  • 2 つの匿名アカウントをそれぞれユーザー名なして作成できます。匿名のアカウントにはパスワードがないため、誰でもそのアカウントを使用して MySQL サーバに接続できます。

    • Windows では、一つの匿名アカウントはローカル ホストの接続用です。そのアカウントにはすべての権限が root アカウントと同様にあります。もう一つのアカウントはすべてのホストの接続用で test データベースおよび test で始まる名前の他のデータベースに対してすべての権限を持っています。

    • Unix では、両方の匿名アカウントはローカル ホストの接続用です。接続はローカル ホストから localhost のホスト名をアカウントの一つあるいは実際のホスト名または他への IP 番号を指定する必要があります。これらのアカウントは test データベースおよび test_ で始まる名前のすべてのデータベースに対してすべての権限を持っています。.

上述のごとく、最初のアカウントにはどれもパスワードがありません。このことは MySQL のインストールはそれらを設定するまでは保護されていないということを意味します。

  • クライアントが匿名ユーザーでパスワードなしで接続しないようにするには、それぞれの匿名のアカウントにパスワードを割り当てるか、あるいはそれらのアカウントを削除する必要があります。

  • それぞれの MySQL root アカウントにパスワードを割り当てる必要があります。

以下の手順では最初の MySQL アカウントのパスワードの設定方法、最初に匿名のアカウント、次に root アカウントへの設定方法を説明します。例の「newpwd」 を実際に使用するパスワードに置き換えます。以下の説明では匿名のアクセスを希望しない場合の匿名のアカウントの削除の仕方についても説明します。

パスワードを新たな設定やテストをしている間に指定する必要がないようにそれらの作業が終わるまでパスワードの設定を望まない場合もあります。しかし、量産用(実稼動)のインストールを使用する前にはそれらを忘れずに設定してください。

匿名アカウントのパスワードの割り当て

匿名アカウントにパスワードを割り当てるには、サーバに root として接続して SET PASSWORD あるいは UPDATE のいずれかを使用します。どちらの場合も、PASSWORD() 機能を使用してパスワードを暗号化します。

Windows の SET PASSWORD を使用するには、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');

Unix で SET PASSWORD を使用するには、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');

2 番目の SET PASSWORD ステートメントでは、host_name をサーバのホスト名で置き換えます。これは user テーブルの root に非-localhost レコードの Host カラムで指定された名前です。ホスト名が分からない場合には、SET PASSWORD を使用する前に以下のステートメントを発行します。

mysql> SELECT Host, User FROM mysql.user;

User カラムで root を持つレコードおよび Host カラムで localhost 以外の何かを探します。次にその Host 値を 2 番目の SET PASSWORD ステートメントで使用します。

匿名のアカウントにパスワードを割り当てる別の方法は UPDATE を使用して user テーブルを直接変更することです。サーバに root として接続して値を適切な user のテーブル レコードの Password カラムに割り当てる UPDATE ステートメントを発行します。その手順は Windows も Unix も同じです。以下の UPDATE ステートメントは両方の匿名アカウントに同時にパスワードを割り当てます。

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = '';
mysql> FLUSH PRIVILEGES;

UPDATE を使用して user テーブルのパスワードを直接更新したら、サーバに FLUSH PRIVILEGES でグラント テーブルを再度読み込むようにサーバに指定する必要があります。さもなければ、その変更はサーバを再起動するまで認識されません。

匿名アカウントの削除

匿名のアカウントを削除するには、以下のようにします。

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

DELETE ステートメントは Windows および Unix 双方に適用されます。Windows で root と同じ権限を持つ匿名のアカウントのみを削除するには、以下のようにします。

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;

そのアカウントは匿名のアクセスが可能ですべての権限を持っているので、それを削除するとセキュリティが改善されます。

root アカウントのパスワードの割り当て

root アカウントへのパスワードの割り当てには幾つかの方法があります。以下の説明では 3 種類の方法を示します。

  • SET PASSWORD ステートメントを使用する

  • mysqladmin コマンドラインのクライアント プログラムを使用する

  • UPDATE ステートメントを使用する

SET PASSWORD を使用してパスワードを割り当てるには、サーバに root として接続して 2 つの SET PASSWORD ステートメントを発行します。PASSWORD() 機能を使用してパスワードを忘れずに暗号化します。

Windows では、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');

Unix では、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

2 番目の SET PASSWORD ステートメントでは、host_name をサーバのホスト名で置き換えます。これは匿名アカウントのパスワードを割り当てた時に使用したホスト名と同じものです。

パスワードを root アカウントに mysqladmin を使用して割り当てるには、以下のコマンドを実行します。

shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

これらのコマンドは Windows および Unix の両方に適用されます。.2 番目のコマンドで、host_name をサーバのホスト名で置き換えます。パスワードの二重引用符は常に必要とは限りません、パスワードにスペースあるいは使用しているコマンド インタープリタに特殊な他の文字を使用している場合には使用する必要があります。

UPDATE を使用して user テーブルを直接変更することもできます。以下の UPDATE ステートメントは両方の root アカウントに同時にパスワードを割り当てます。

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

UPDATE ステートメントは Windows および Unix の両方に適用されます。

パスワードを設定すると、サーバに接続するたびに適切なパスワードを入力する必要があります。例えば、mysqladmin を使用してサーバをシャットダウンするには以下のコマンドを使用します。

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)

:パスワード設定後に root パスワードを忘れた場合には、項B.1.4.1. 「How to Reset the Root Password」、がその再設定を行います。

新たにアカウントを追加するには、GRANT ステートメントを使用します。その手順は、項4.8.2. 「MySQL への新規ユーザの追加」 を参照してください。

2.11. MySQL のアップグレード

一般的な規則として一つのリリースのシリーズから別のリリースのシリーズにアップグレードするには、シリーズをスキップしないで次のシリーズにアップグレードすることをお勧めします。例えば、現在使用している MySQL 4.0 から新しいシリーズにアップグレードするには、5.0 あるいは 5.1 にアップグレードするのではなく MySQL 4.1 にアップグレードします。

以下の項目はアップグレードする際の必ず実施するチェックリストを示したものです。

  • MySQL 5.0 から 5.1 にアップグレードする前に、 項2.11.1. 「MySQL 5.0 から 5.1 へのアップグレード」、および 付録 C. MySQL Change History をお読みください。これらは MySQL 5.1 で新しく追加された機能および MySQL 5.0 と異なる機能に関する情報を提供します。MySQL 5.0 以前のリリース シリーズからアップグレードするには、MySQL 5.0 にアップグレードするまでに各シリーズから順番にアップグレードし、その後で MySQL 5.1 にアップグレードします。.MySQL 5.0 からのアップグレードに関する情報は、MySQL 5.0 Reference Manual を参照してください。以前のリリースに関しては、MySQL 3.23, 4.0, 4.1 の参照マニュアルを参照してください。

  • アップグレードを実施する前に、グラント テーブルを含む mysql データベースを格納したデータベースのバックアップを取ります。

  • MySQL のリリースの中にはテーブルに互換性のない変更をしている場合もあります。(弊社はこれらの変更を避けるように努めていますが、時にリリース間の互換性を取るよりも深刻な問題の修正に迫られる場合があります。)MySQL の リリースの中には新たに権限や機能を加えるためにグラント テーブルの構成に変更を加えているものもあります。

    それらの変更による問題を避けるためには、MySQL の新しいバージョンにアップグレードした後に、テーブルをチェックし (必要に応じて修正する)、グラント テーブルをアップグレードして、新しい機能を利用できるようにそれらが現在の構成になっていることを確認する必要があります。項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 参照。

  • Windows 上で MySQL サーバを稼動している場合には、項2.3.14. 「Windows を使用した MySQL をアップグレードする」 を参照してください。

  • レプリケーションを使用している場合、レプリケーション設定のアップグレードに関する情報、項5.4.3. 「レプリケーション セットアップのアップグレード」にあります。

  • MySQL 5.1.9 の場合、mysqld-max サーバはバイナリのディストリビューションに含まれています。個別の MySQL-Max ディストリビューションはありません。MySQL 5.1.12 では、バイナリのディストリビューションは以前 mysqld-max に含まれていた機能を実装したサーバを搭載しています。

  • ユーザー定義関数 (UDF) の所定の名前で作成して MySQL を同じ名前の内蔵機能を実装した新しいバージョンにアップグレードした場合、その UDF はアクセスできなくなります。これを修正するには、DROP FUNCTION を使用して UDF を削除し、次に CREATE FUNCTION を使用して衝突しない名前の UDF を新たに作成します。同じとこが新しいバージョンの MySQL が既存の機能と同名の内蔵機能を実装した場合にも言えます。サーバの異なる種類の機能に対するリファレンスの解釈を説明した規則は、項8.2.4. 「構文解析と解像度のファンクション名」 を参照してください。

MySQL のフォーマット ファイルやデータ ファイルを MySQL の同じリリースのバージョン内に限り同じアーキテクチャの異なるバージョン間で常に移動できます。MySQL の動作中に文字セットを変更するには、myisamchk -r -q --set-collation=collation_name をすべての MyISAM テーブルで実行する必要があります。さもなければ、文字セットを変更することによって分類順序も変更される場合があるので、インデックスは正しく順序付けされない場合があります。

新しいバージョンの使用に懸念がある場合には、常に古い mysqld の名前を新しいバージョンをインストールする前に変更します。例えば、MySQL 5.0.13 を使用していてそれを 5.1.10 にアップグレードする場合、現在のサーバ名を mysqld から mysqld-5.0.13 に変更します。新しい mysqld に予想外の問題が発生した場合は、単にそれをシャットダウンして古い mysqld を起動するだけで済みます。

アップグレード後に、再コンパイルしたクライアント プログラムで Commands out of sync あるいは予想外のコア ダンプなどの問題が発生した場合、それは多分に古いヘッダーあるいはライブラリ ファイルをプログラムをコンパイルする際の使用したためです。この場合、mysql.h ファイルおよび libmysqlclient.a ライブラリの日付をチェックしてそれらが新しい MySQL のディストリビューションによるものであることを確認します。そうでない場合には、プログラムを新しいヘッダーおよびライブラリで再度コンパイルします。

新しい mysqld サーバが起動しないあるいはパスワードなしで接続できないなどの問題が発生した場合には、前のインストールの古い my.cnf ファイルが残っていないか確認します。これは --print-defaults オプション (例えば、mysqld --print-defaults) で確認できます。このコマンドがプログラム名以外の何かを表示した場合、サーバあるいはクライアント オペレーションに影響を及ぼすアクティブな my.cnf ファイルがあることになります。

新しいリリースの MySQL をインストールする際はいつでも Perl DBD::mysql モジュールを再構築して再インストールするのがいいでしょう。同じことが、PHP mysql 拡張および Python MySQLdb モジュールなどの他の MySQL インターフェースにも言えます。

2.11.1. MySQL 5.0 から 5.1 へのアップグレード

5.0 のインストールから 5.0.10 あるいはそれ以上にアップグレードするには グラント テーブルのアップグレード が必要です。アップグレードしなかった場合、保持したプロシージャおよび機能を作成しても機能しません。この手順に関する説明は、項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 を参照してください。

:新しいバージョンのソフトウェアをインストールする前にデータのバックアップを必ず励行してください。MySQL が高品質の維持に努めたにしても、デバックアップを取ってデータを守るのはお客様ご自信です。MySQL AB ではテーブルをダンプして以前のバージョンからテーブルを再ロードすることをお勧めします。5.1.

一般的には、MySQL 5.0 から 5.1 にアップグレードするには以下を行う必要があります。

  • 項2.11. 「MySQL のアップグレード」 の項目をチェックし、その項目でアプリケーションに影響を及ぼすものがないか確認します。

  • この項で後述する変更リストをチェックしそれらの変更リストの一部にアプリケーションに影響を及ぼすものがないか確認します。非互換の変更 の印の付いた項目に特に注意します。これらの非互換の MySQL の以前のバージョンの結果、およびアップグレードする前 に必要な注意事項。

  • MySQL のリリースの中にはテーブルに互換性のない変更をしている場合もあります。(弊社はこれらの変更を避けるように努めていますが、時にリリース間の互換性を取るよりも深刻な問題の修正に迫られる場合があります。)MySQL の リリースの中には新たに権限や機能を加えるためにグラント テーブルの構成に変更を加えているものもあります。

    それらの変更による問題を避けるためには、MySQL の新しいバージョンにアップグレードした後に、mysql_upgrade を実行してテーブル (必要に応じて修正する) をチェックし、グラント テーブルをアップグレードして、新しい機能を利用できるようにそれらが現在の構成になっていることを確認します。項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 参照。

  • MySQL 5.1 の変更履歴を読んでどのような重要な新機能を 5.1 で使用できるか確認します。項C.1. 「Changes in release 5.1.x (Development)」 参照。

  • Windows 上で MySQL サーバを稼動している場合には、項2.3.14. 「Windows を使用した MySQL をアップグレードする」 を参照してください。

  • レプリケーションを使用している場合、レプリケーション設定のアップグレードに関する情報、項5.4.3. 「レプリケーション セットアップのアップグレード」にあります。

以下のリストはアプリケーションに影響を及ぼす可能性があり MySQL 5.1 にアップグレードする際に注意を要する項目をリストに纏めたものです。.

設定の変更:

  • MySQL 5.1.11 以前で MySQL をソースから SSL サポート付きでビルドする場合、configure--with-openssl あるいは --with-yassl オプションのいずれかで実行します。MySQL 5.1.11 では、それらのオプションは両方とも --with-ssl オプションで置き換えられています。デフォルトで、--with-ssl でバンドルした yaSSL ライブラリを使用できます。OpenSSL を選択するには、オプションを --with-ssl=path として与え、そこでは path はディレクトリで OpenSSL のヘッダーファイルおよびライブラリが格納されています。

サーバの変更:

  • 非互換の変更:MySQL 5.1 の実装ではランタイム時のコンポーネントのローディングおよびアンローディングをサーバの起動なしで行うプラグイン API をサポートしています。項25.2. 「The MySQL Plugin Interface」。プラグイン API には mysql.plugin テーブルが必要です。MySQL の旧バージョンからアップグレードするには、mysql_upgrade コマンドを実行してこのテーブルを作成します。項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 参照。

    プラグインは plugin_dir システム変数で指定されたディレクトリにインストールされます。この変数はまたサーバがユーザー定義関数 (UDF) をロードするロケーションを管理し、この点が MySQL の旧バージョンから変更になっています。.つまり、すべての UDF ライブラリ ファイルは現在はプラグインのディレクトリにインストールする必要があります。MySQL の旧バージョンからアップグレードする際、UDF ファイルをプラグインのディレクトリに移行する必要があります。

  • 非互換の変更:table_cache システムの変数は table_open_cache に名前が変わっています。table_cache を参照するすべてのスクリプトは新しい名前を使用できるように更新する必要があります。

  • 非互換の変更:MySQL 5.1.15 では、以下の条件を read_only システム変数を有効にするために適用します。

    • read_only を明示のロック (LOCK TABLES で取得) 中に有効にしようとしたり あるいは 未処理のトランザクションがある場合、エラーが発生します。

    • 他のクライアントが明示のテーブル ロックを掛けていたり未処理のトランザクションがある場合、read_only の有効化はロックが解除されトランザクションが終了するまでブロックされます。read_only の有効化がペンディング中には、他のクライアントによるテーブル ロックあるいはトランザクションの開始もまた read_only が設定されるまでブロックされます。

    • read_onlyはグローバル読み込みロック (FLUSH TABLES WITH READ LOCK で取得) 中でもそれがテーブル ロックを実行しないために有効にできます。

    以前は、read_only の有効化は明示のロックあるいはトランザクションが未処理の場合でも直ぐに有効になり、ステートメントのデータの変更はサーバで同時に行われていました。

  • 非互換の変更:IGNORE_SPACE によって影響を受ける機能名が MySQL 5.1.13 ではおよそ 200 から 30 に大幅に減少しました。 (IGNORE_SPACE の詳細は、項8.2.4. 「構文解析と解像度のファンクション名」 を参照してください。)この変更によりペーパー操作の一貫性が改善されています。しかしながら、以下の条件に基づく旧 SQL コードの非互換性の可能性も加わっています。

    • IGNORE_SPACE は無効になっています。

    • 機能名に続く余白部分の存在の有無によって同名の (例えば、PI() versus PI ()) 内蔵機能および保持機能間の区別をしています。

    MySQL 5.1.13 の IGNORE_SPACE によりもはや影響を受けない機能には、その戦略は通用しません。前述の非互換に基くコードがある場合以下の手法のいずれかを使用できます。

    • 保持機能名と内蔵機能名が衝突する名前の場合、余白の有無に関係なくスキーマ名修飾語の名前のある保持機能を参照します。例えば、schema_name.PI() あるいは schema_name.PI () と書きます。

    • あるいは、保持機能の名前に衝突しない名前に変更して、機能の実行を新しい名前を使用できるように変更します。

  • 非互換の変更:utf8 カラムでは、フル テキスト parser が幾つかの非単語の句読点および余白文字を単語文字として不正確に解釈するため、検索した場合不正確な検索結果を返す場合があります。修正には MySQL 5.1.12 のフル テキスト parser の変更が含まれ、FULLTEXT インデックスを utf8 カラムに持つテーブルは REPAIR TABLE で修正する必要があります。

    REPAIR TABLE tbl_name QUICK;
    
  • 非互換の変更: FULLTEXT インデックスの構成は MySQL 5.1.6 で変更になっています。MySQL 5.1.6 あるいはそれ以降にアップグレード後に、REPAIR TABLE ステートメントを FULLTEXT インデックスを含む各テーブルにコールします。

  • 非互換の変更:MySQL 5.1.6 以前では、サーバは一般的なクエリ ログを書いてログ ファイルへのクエリ ログのエントリを遅くします。MySQL 5.1.6 では、サーバのこれらのログのログ機能はさらに柔軟になっています。ログのエントリはログ ファイル (上記のように) あるいは general_log および mySQL データベースの slow_log に書き込まれます。ロギングが有効になると、ディスティネーションのいずれかまたは両方が選択されます。 --log-output オプションはディスティネーションあるいはログ出力のディスティネーションを管理します。項4.11.1. 「一般クエリとスロー クエリのログ出力先の選択」 参照。

    ロギングが有効になると、デフォルトのディスティネーションはこの段階でテーブルにログされます。この点が以前のバージョンと異なる点です。ログをログ ファイルにする設定のサーバを所持している場合には、--log-output=FILE を使用してこの振る舞いを MySQL の 5.1.6 あるいはそれ以降にアップグレードした後に保持します。

  • MySQL 5.1.12 の場合、lc_time_names システム変数は日付および省略文字の記載に使用される言語を管理するロケールを指定します。この変数は DATE_FORMAT()DAYNAME() および MONTHNAME() 関数の出力に影響を与えます。項4.10.9. 「MySQL サーバのローケル サポート」 参照。

  • MySQL 5.1.6 では、データベースおよびテーブル識別子の特殊文字は相当するディレクトリ名およびファイル名を作成中にエンコードされます。これにより識別子として使用される文字制限が緩やかになります。項8.2.3. 「ファイル名への識別子のマッピング」 参照。mysql_upgrade を実施すると、データベース名およびテーブル名は、それらが特殊文字を含む場合、新しいフォーマットに更新されます。

  • MySQL 5.1.9 では、mysqld_safe はもはや黙示的に mysqld-max をそれが存在した場合でも呼び出しません。代わりに、それは --mysqld あるいは --mysqld-version オプションが他のサーバを明示的に指定しない限り mysql を呼び出します。これまで黙示的に mysqld-max の呼び出しを使用していた場合、これからは適切なオプションを使用する必要があります。

SQL の変更:

  • 非互換の変更:MySQL 5.1.8 では、TYPE = engine_nameENGINE = engine_name テーブル オプションに対してまだ類義語として受け入れられますが、警告が表示されます。このオプションは MySQL 5.1.7 では利用できず、MySQL 5.2 ではすべて削除されますので構文エラーが表示されます。.

    TYPE は MySQL 4.0 以降は使用していません。

  • 非互換の変更: トリガのネームスペースは MySQL 5.0.10 では変更になっています。トリガ名は以前はテーブルごとに一意でなければなりませんでした。現在はそれらはスキーマ (データベース) ごとに一意です。この変更によって DROP TRIGGER 構文は現在テーブル名の代わりにスキーマ名を使用しています (スキーマ名はオプションで、削除された場合は現在のスキーマが使用されます)。

    旧バージョンの MySQL 5 から MySQL 5.0.10 あるいはそれ以降にアップグレードする場合、すべてのトリガを削除して再度作成しなければ DROP TRIGGER はアップグレード後は機能しなくなります。以下のその手順を示します。

    1. MySQL 5.0.10 あるいはそれ以降にアップグレードすると INFORMATION_SCHEMA.TRIGGERS テーブルでトリガ情報にアクセスできます。(-5.0.10 トリガでも機能する必要があります。)

    2. 以下の SELECT ステートメントですべてのトリガ定義をダンプします。

      SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAME,
                    ' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION, ' ON ',
                    t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE,
                    ' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
      INTO OUTFILE '/tmp/triggers.sql'
      FROM INFORMATION_SCHEMA.TRIGGERS AS t;
      

      そのステートメントは INTO OUTFILE を使用していますので、FILE 権限を持つ必要があります。ファイルはサーバのホストで、希望される場合任意のファイル名で、作成されます。100% 安全であるためには、トリガ定義を triggers.sql ファイルで確認し、そのファイルのバックアップを取るとよいでしょう。

    3. サーバを停止してすべてのトリガをすべての .TRG ファイルをデータベースのディレクトリから削除して削除します。ロケーションをデータ ディレクトリに変更して以下のコマンドを発行します。

      shell> rm */*.TRG
      
    4. サーバを起動し triggers.sql ファイルを使用してすべてのトリガを再度作成します。例えば、私の場合には:

      mysql> delimiter // ;
      mysql> source /tmp/triggers.sql //
      
    5. すべてのトリガの作成が SHOW TRIGGERS ステートメントを使用して完了したことを確認します。

  • 非互換の変更:MySQL 5.1.6 では TRIGGER 権限を使用しています。以前は、SUPER 権限はトリガの作成あるいは削除に必要でした。今それらの操作には TRIGGER 権限が必要です。これやセキュリティの改善に行われたもので、トリガを作成するためにもはやグラント ユーザーには SUPER 権限は必要ありません。しかし、トリガの DEFINER 節で指定されたアカウントは SUPER 権限を持つという条件が TRIGGER 権限の条件に変わっています。MySQL 5.0 or 5.1 の旧バージョンから MySQL 5.1.6 あるいはそれ以上にアップグレードするには、項4.5.4. 「mysql_upgrade — MySQL アップグレードのテーブル チェック」 の説明に従ってグラント テーブルを更新する必要があります。.このプロセスにより TRIGGER 権限を SUPER 権限を持っていたすべてのアカウントに割り当てます。グラント テーブルの更新に失敗すると、トリガは実行に失敗する場合があります。(グラント テーブルの更新後、SUPER 権限をもはやそれを必要としないそれらのアカウントから取り消すことができます。)

  • 4 桁の年を表す 200 以内の日付の場合、世紀を含める黙示の変換が DATE_ADD()DATE_SUB()+ INTERVAL、および - INTERVAL で実行される日付の計算式に適用されています。(例えば、DATE_ADD('0050-01-01 00:00:00', INTERVAL 0 SECOND)'2050-01-01 00:00:00' になります。)MySQL 5.1.11 では、これらの操作は不正確な非NULL 値ではなく NULL を返します。(Bug#18997)

  • キーワードの幾つかが MySQL 5.1 で予約されます。それらは MySQL 5.0 では予約されなかったものです。項8.3. 「MySQLでの予約語の扱い」 参照。

  • LOAD DATA FROM MASTER および LOAD TABLE FROM MASTER ステートメントは今後は使用しません。推奨している代案については、項12.6.2.2. 「LOAD DATA FROM MASTER 構文」 を参照してください。

  • プラグイン API に使用される INSTALL PLUGIN および UNINSTALL PLUGIN ステートメントは新規です。同様にフル テキスト インデックスの parser プラグインに関連した FULLTEXT インデックス作成用の WITH PAPER 節も新規です。 項25.2. 「The MySQL Plugin Interface」.

C API の変更:

  • 非互換の変更:MySQL 5.1.7 では、mysql_stmt_attr_get() C API 関数は STMT_ATTR_UPDATE_MAX_LENGTH の無署名 int ではなく boolean を返します。(Bug#16144)

2.11.2. MySQL データベースの他のマシンへのコピー

.frm.MYI、および .MYD ファイルを MyISAM テーブルに同じフローティング ポイント フォーマットをサポートしている異なるアーキテクチャ間でコピーでします。(MySQL はバイト スワッピング問題を処理します。.)項13.4. 「MyISAM ストレージエンジン」 参照。

データベースを異なるアーキテクチャ間で移動する場合、mysqldump を使用して SQL ステートメントを含むファイルを作成します。次にそのファイルを別のマシンに転送して mysql クライアントの入力として扱います。

利用できるオプションを表示するには mysqldump --help を使用します。データを新しいバージョンの MySQL に移動するには mysqldump --opt を使用して最適化を活用することによってさらに小さくて迅速に処理が可能なダンプ ファイルを作成します。

データベースを 2 つのマシンで間で移動する最も容易な方法(速くはないが)はデータベースを搭載したマシン上で以下のコマンドを実行することです。す。

shell> mysqladmin -h 'other_hostname' create db_name
shell> mysqldump --opt db_name | mysql -h 'other_hostname' db_name

データベースを遠隔のマシンから速度の遅いネットワークにコピーするには、以下のコマンドを使用します。

shell> mysqladmin create db_name
shell> mysqldump -h 'other_hostname' --opt --compress db_name | mysql db_name

ダンプをファイルに保存して、そのファイルをターゲット マシンに転送し、そのファイルをそこのデータベースにロードすることもできます。例えば、データベースをソース マシンの圧縮ファイルに以下のようにダンプします。

shell> mysqldump --quick db_name | gzip > db_name.gz

データベースのコンテンツを含んだファイルをターゲット マシンに転送しそこで以下のコマンドを実行します。

shell> mysqladmin create db_name
shell> gunzip < db_name.gz | mysql db_name

データベースの転送に mysqldump および mysqlimport を使用することもできます。大きなテーブルの場合、これは単に mysqldump を使用するよりも非常に速く転送できます。.以下のコマンドで、DUMPDIRmysqldump の出力の保存に使用されるディレクトリのフルのパス名です。

最初に、その出力ファイルのディレクトリを作成してデータベースをダンプします。

shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR db_name

次に DUMPDIR ディレクトリのファイルをターゲット マシンの相当するディレクトリに転送して、そのファイルをそこの MySQL にロードします。

shell> mysqladmin create db_name           # create database
shell> cat DUMPDIR/*.sql | mysql db_name   # create tables in database
shell> mysqlimport db_name DUMPDIR/*.txt   # load data into tables

mysql データベースのコピーを忘れないでください。そこにグラント テーブルが保存されています。コマンドを MySQL root ユーザーとして新しいマシンで mysql データベースの用意できるまで実行することもできます。

mysql データベースを新しいマシンにインポートしたら、mysqladmin flush-privileges を実行してサーバにグラント テーブルの情報をロードさせます。

2.12. MySQL のダウングレード

この項ではあまりあり得ないケースだが旧バージョンが新しいバージョンより優れている場合における旧 MySQL バージョンにへのダウングレードの手順について説明します。

同じリリースのシリーズ (例えば、5.0.13 から 5.0.12) 内でのダウングレード際の一般的な規則としては新しいバイナリを旧バージョンの上段にインストールすることです。この場合データベースにはなにもする必要はありません。いつものように、この場合もバックアップを取ります。

以下の項目はダウングレードする際に必ず実施するチェックリストを示したものです。

  • ダウングレードするリリース シリーズのアップグレードの項を読み、実際に必要な機能がないことを確認します。 項2.11. 「MySQL のアップグレード」.

  • そのバージョンのダウングレードの項ある場合には、それも同様に読む必要があります。

MySQL のフォーマット ファイルやデータ ファイルを MySQL の同じリリースのバージョン内に限り同じアーキテクチャの異なるバージョン間で移動できます。

一つのリリース シリーズから別のリリース シリーズにダウングレードする場合、テーブル ストレージ フォーマットの互換性が取れなくなる場合があります。このような場合、mysqldump を使用してダウングレードする前にテーブルをダンプできます。ダウングレードしたら、mysql あるいは mysqlimport を使用してダンプ ファイルをロードしテーブルを作成します。参考例は、項2.11.2. 「MySQL データベースの他のマシンへのコピー」 を参照してください。

ダウンロードした際のテーブル フォーマット変更による非互換問題の一般的な現象はテーブルを開くことができないことです。そのような場合には、以下の手順に従います。

  1. 新バージョンからダウングレードしている旧 MySQL サーバを停止します。

  2. 旧バージョンにダウングレードしている新しい MySQL サーバを再起動します。

  3. mysqldump を使用して旧サーバにアクセスできなかったテーブルをダンプして新たにダンプファイルを作成します。

  4. 新しい MySQL サーバを停止して旧サーバを再起動します。

  5. 旧サーバにダンプ ファイルをロードします。これでテーブルにアクセスでるはずです。

2.12.1. MySQL 5.0 へのダウングレード

MySQL 5.0 はイベントをサポートしていません。データベースにイベントが含まれる場合には mysqldump を使用するときに --skip-events オプションを使用してイベントがダンプされないようにします。(項7.12. 「mysqldump — データベースバックアッププログラム」 参照。)

2.13. オペレーティング システムに特化した注釈

2.13.1. Linux の注釈

この項では Linux を使用した場合に発生する問題について説明します。この項の前半ではバイナリおよびソースのディストリビューションを使用した際のオペレーティング システムに関する一般的な懸案事項および問題、およびインストール後の懸案事項について説明します。この項の後半では Linux の特定のプラットフォームでの問題について説明します。

これらの問題の多くは旧バージョンの Linux で発生します。最新バージョンを使用している場合には、何も問題が発生しない場合があります。

2.13.1.1. Linux オペレーティング システムの注釈

MySQL には最低でも Linux バージョン 2.0 が必要です。

警告: 弊社では予想外の問題が Linux 2.2.14 および SMP システムの MySQL で報告されています。弊社にはまた MySQL のユーザーから MySQL を kernel 2.2.14 で使用した場合深刻な安定性の問題が発生するとの報告も寄せられています。この kernel を使用している場合にば、2.2.19 (あるいはそれ以降) あるいは 2.4 kernel にアップグレードする必要があります。複数の CPU ボックスを使用している場合には、2.4 のご使用を真剣にご検討ください。2.4 は速度を大幅に改善します。お客様のシステムがさらに安定します。

LinuxThread を使用する際は、少なくとも 3 種類の mysqld プロセスを実施する必要があります。これらは ファクト スレッドにあります。1 つ目は LinuxThread マネージャ用、2 つ目接続用、3 つ目はアラームおよび信号を扱います。

2.13.1.2. Linux バイナリ ディストリビューションの注釈

MySQL の Linux-Intel バイナリおよび RPM リリースは最高速度に設定されています。弊社では常に高速で安定したコンパイラの使用を心がけています。

バイナリのリリースは -static とリンクしていますので、通常はどのバージョンのシステム ライブラリを使用しているのか心配する必要はありません。Linux Thread をインストールする必要もありません。-static とリンクしたプログラムは動的にリンクしたプログラムより少しだけ大きくなりますが、多少速く (3-5%) なっています。しかし、静的にリンクされたプログラムの一つの問題は、ユーザー定義関数 (UDF) を使用できないことです。UDF を書いたり使用する (C あるいは C++ プログラマーの場合のみ) 場合、動的リンクを使用してご自身で MySQL をコンパイルする必要があります。

バイナリ ディストリビューションの既知の問題は libc (Red Hat 4.x あるいは Slackware など) を使用した旧 Linux システムでは、ホスト名のリゾリューションに幾つかの (致命的ではない) 問題があることです。お客様のシステムが glibc2 ではなく libc を使用している場合、多分ホスト名リゾリューションおよび getpwnam() で問題に遭遇します。これは glibc (不幸にも) が、-static でコンパイルする時でさえ、いくつかの外部のライブラリに依存してホスト名リゾリューションおよび getpwent() を実装しているからです。これらの問題は 2 つの方法で明らかです。

  • mysql_install_db を実行した時に以下のエラーメッセージが表示されます。

    Sorry, the host 'xxxx' could not be looked up
    

    この問題は mysql_install_db --force を実行して処理します。それは mysql_install_dbresolveip テストを実行しません。問題はホスト名をグラント テーブルで使用できないことです。localhost 以外に、IP 番号を使用する必要があります。--force をサポートしていない旧バージョンの MySQL を使用している場合、テキスト エディタを使用してmysql_installresolveip テストを手動で削除する必要があります。

  • mysqld--user オプションで実行する際にも以下のエラーが表示される場合があります。

    getpwnam: No such file or directory
    

    この問題を回避するには、--user オプションを指定しないで mysqldsu コマンドで実行します。これによりシステムそのもので mysqld プロセスのユーザーID を変更するため mysqld はそれをする必要がありません。

別の解決策、それは両方の問題を解決しますが、バイナリのディストリビューションを使用しません。MySQL のソース ディストリビューション (RPM あるいは tar.gz フォーマットで) を取得しそれをインストールします。

Linux 2.2 バージョンの中には、クライアントが TCP/IP でmysqld サーバへ新たに相当数の接続をしたときに Resource temporarily unavailable のエラーが表示される場合があります。この問題は Linux には TCP/IP ソケットを閉じる時間とシステムが実際のそれを開放する間に遅延があるためです。TCP/IP のスロット数には限りがあるため、クライアントが余りにも多くの TCP/IP 接続を短時間に行うとリソース不足のエラーに遭遇します。例えば、MySQL test-connect ベンチマークを TCP/IP で実行する時にエラーが発生する場合があります。

弊社ではこの問題に関して Linux の別々のメーリング リストを使用して数回連絡を取っていますが現在までのところまだ解決策は見つかっておりません。唯一これまで分かっている 「fix」 はクライアントの接続を執拗に続けること、あるいはデータベース サーバとクライアントが同じマシンで稼動している場合、TCP/IP 接続ではなく Unix のソケット ファイル接続を使用することです。

2.13.1.3. Linux バイナリ ディストリビューションの注釈

以下の glibc に関する注釈は MySQL をご自身でビルドする際にのみ適用します。Linux を x86 マシンで使用している場合、弊社のバイナリが多くのケースで最適です。弊社では弊社のバイナリを弊社が知り得る限りベスト パッチの glibc バージョンにリンクし最高のコンパイラ オプションを使用して、高負荷のサーバに最適なソリューションを目指しています。一般的なユーザーにとって、多数の同時接続あるいは 2 GB の制限を越えるテーブルでの設定においてさえ、弊社のバイナリはその殆どのケースで最適な選択といます。以下のテキストを読まれた後で、それでも何をすべきか分からない場合には、まず弊社のバイナリを試してみてお客様のニーズに合うか決めてください。もし要求を十分満たすことができない場合には、ご自身でビルドしてみることもできます。そのような場合、お客様のご意見を寄せて頂ければ弊社はさらによいバイナリをビルドするための参考にさせて頂きます。

MySQL は Linux に LinuxThread を使用しています。glibc2 を実装していない旧 Linux バージョンを使用している場合には、MySQL をコンパイルする前に LinuxThread をインストールする必要があります。LinuxThread は http://dev.mysql.com/downloads/os-linux.html で取得できます。

INSERT DELAYD ステートメントが発行される時に使用されるバージョン 2.1.1 を含む以前のglibc のバージョンには pthread_mutex_timedwait() の処理で致命的なバグがあります。glibc をアップグレードするまでは INSERT DELAYED を使用しないようお勧めします。

Linux kernel および LinuxThread ライブラリはデフォルトで最大 1,024 スレッドを扱うことができます。1,000 以上の同時接続を計画している場合には、以下のように LinuxThread を変更する必要があります。

  • PTHREAD_THREADS_MAXsysdeps/unix/sysv/linux/bits/local_lim.h で 4096 に増やし STACK_SIZElinuxthreads/internals.h で 256KB に減らします。パスは glibc のルートに関連しています。(MySQL は STACK_SIZE がデフォルトの 2MB の場合には 600-1000 接続では安定しません。)

  • Recompile LinuxThreads to produce a new libpthread.a library, and relink MySQL against it.

LinuxThreads のスレッド制限の回避法の詳細は http://www.volano.com/linuxnotes.html にあります。

MySQL のパフォーマンスに大きな影響を与える別の問題が、特に SMP システム上であります。glibc 2.1 の LinuxThreads の mutex の実装が mutex をほんの短時間保持する多くのスレッドを使用するプログラムで非常に貧弱です。これにより逆説的な結果が生じます。MySQL を無修正の LinuxThreads にリンクさせる際、SMP からプロセッサを削除すると MySQL パフォーマンスが実質的に多くのケースで改善されます。弊社ではこの振る舞いを修正するためのパッチを glibc 2.1.3 に用意しましたhttp://dev.mysql.com/Downloads/Linux/linuxthreads-2.1-patch)。

glibc 2.2.2 を使用する際、MySQL に adaptive の mutex を使用することによって glibc 2.1.3 にパッチ版を使用するよりはるかによくなります。しかし、使用条件によっては、glibc 2.2.2 の現在の mutex code はオーバースピンし、MySQL パフォーマンスを低下さるので、その点注意が必要です。この現象の再現を mysqld のプロセスを最高度まで再調整することで減らすことができます。弊社ではまたパッチを使用してオーバースピンを修正できるようにしました。そのパッチは http://dev.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch にあります。そのパッチでオーバースピン、スレッドの最大数、およびスタックのスペースをすべて一つにまとめるなどの修正を加えています。そのパッチは linuxthreads ディレクトリに patch -p0 </tmp/linuxthreads-2.2.2.patch を適用します。弊社ではそのパッチが glibc 2.2 の今後のリリースに反映されることを希望しています。いずれにしろ、glibc 2.2.2 にリンクするには、STACK_SIZE および PTHREAD_THREADS_MAX をまだ修正する必要があります。弊社ではデフォルトの値が、今後 MySQL の高負荷設定に対応できるように修正され、お客様ご自身でビルドする際に必要なコマンドが ./configure; make; make install まで減少できるように期待しています。

これらのパッチは特定の libpthread.a の静的バージョンのビルドに使用し、MySQL に静的にリンクする際にのみ使用することをお勧めします。これらのパッチは MySQL に使用する際は安全でそのパフォーマンスを大幅に改善しますが、他のアプリケーションに対する影響についてはなにも言う立場にありません。LinuxThreads をライブラリのパッチ版の静的ベージョンが必要な他のアプリケーションにリンクする、あるいはパッチ共有バージョンをビルドしそれをお客様のシステムにインストールすることは、お客様ご自身のリスクで行うことになります。

MySQL のインストールの最中に予想外の問題に遭遇した場合、あるいはそれに一般的なユーティリティのハンギングが伴う場合、それらの問題はライブラリあるいはコンパイラにいずれかに起因するものである確立が高いといえます。このような場合には、弊社のバイナリがその問題を解決します。

お客様ご自身の MySQL クライアント プログラムをリンクさせる場合、ランタイムで以下のエラーが表示される場合があります。

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

この問題は以下のメソッドのいずれかで回避できます。

  • クライアントを -Lpath ではなく -Wl,r/full/path/to/libmysqlclient.so フラグにリンクします。

  • libmysqclient.so/usr/lib にコピーします。

  • クライアントを起動する前に libmysqlclient.so のディレクトリのパス名を LD_RUN_PATH 環境変数に追加します。

富士通のコンパイラ (fcc/FCC) を使用する場合、Linux のヘッダーファイルは gcc に特化したものですので MySQL のコンパイルで問題が発生する場合があります。以下の configure 行が fcc/FCC の役に立つはずです。

CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
    -DCONST=const -DNO_STRTOLL_PROTO" \
CXX=FCC CXXFLAGS="-O -K fast -K lib \
    -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE \
    -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
    '-D_EXTERN_INLINE=static __inline'" \
./configure \
    --prefix=/usr/local/mysql --enable-assembler \
    --with-mysqld-ldflags=-all-static --disable-shared \
    --with-low-memory

2.13.1.4. Linux のインストール後の注釈

mysql.server はMySQL インストール ディレクトリの support-files ディレクトリあるいは MySQL のソース ツリーにあります。それを自動的起動・シャットダウンの /etc/init.d/mysql としてインストールします。項2.10.2.2. 「MySQL を自動的に起動・停止する」 参照。

MySQL が十分なファイルや接続ができない場合、十分なファイルを処理する Linux を設定していない場合があります。

Linux 2.2 およびそれ以降では、割り当てられたファイル処理を以下のようにチェックできます。

shell> cat /proc/sys/fs/file-max
shell> cat /proc/sys/fs/dquot-max
shell> cat /proc/sys/fs/super-max

16MB 以上のメモリがある場合、何か以下のようなものを init スクリプト (例えば、SuSE Linux の /etc/init.d/boot.local) を追加する必要があります。

echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max

コマンドラインの echo コマンドを root として実行することもできます。しかし、これらの設定は次回コンピュータを再起動した時には失われます。

代わりに、これらのパラメータを sysctl ツールを使用して起動時に設定できます。それは多くの Linux ディストリビューション (SuSE Linux 8.0 およびそれ以降を含む) で使用されています。以下の値を /etc/sysctl.conf の名前のファイルに入れます。

# Increase some values for MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024

また以下を /etc/my.cnf に追加する必要があります。

[mysqld_safe]
open-files-limit=8192

これによりサーバの接続総数およびオープン ファイルの上限 8,192 まで可能になります。.

LinuxThreads の STACK_SIZE 定数によりアドレス スペースのスレッド スタックのスペースを管理します。その管理は各スレッド スタックに十分余裕をあたえられるように大きく、しかしスレッドのスタックが mysqld データに入り込まないように小さくなくてはなりません。幸いなことに、現在使用しているアドレスのマップを外す要求を出した場合 Linux の mmap() の実装によってマップした領域のマップを外し、エラーを返さずにページ全体のデータをゼロにすことが弊社の実験で分かりました。ですから mysqld あるいは他のスレッド アプリケーションの安全はスレッドを作成するコードの 「紳士的な」 振る舞いにかかっています。ユーザーは所定の時間での実行中のスレッド数がスレッド スタックがグローバル ヒープに近寄らないように十分に低くなっているようにするための対策を講じる必要があります。mysqld を使用して、適切な値を max_connections 変数に設定することでこの振る舞いを強化する必要があります。

MySQL をご自身でビルドする場合、スタックをよくするために LinuxThreads をパッチします。項2.13.1.3. 「Linux バイナリ ディストリビューションの注釈」 参照。LinuxThreads のパッチを望まない場合、max_connections を 500 以下の値に設定します。その値は大きなキーバッファ、大きなヒープ テーブル、あるいは mysqld に大きな容量のメモリを割り当てる何かがある、または 2.2 kernel を 2GB パッチで動作させる場合にはもっと小さい値にする必要があるかも知れません。弊社のバイナリあるいは RPM バージョンを使用する場合、大きなキーバッファあるいは多量のデータを伴う大きなヒープ テーブルがない場合、max_connections が 1500 に設定しても安全です。LinuxThreads のSTACK_SIZE が小さければ小さいほど、多くのスレッドを安全に作成できます。弊社では 128KB から 256KB の間の値をお勧めしています。

多数の同時接続を使用する場合、フォーキングあるいは子のクローン化でプロセスを妨げることによってフォーク ボム アタックを妨げようとする 2.2 kernel の「feature」 によって影響を受ける場合があります。これによって 同時クライアントが増えるに従って MySQL はうまくスケールできなくなります。シングルの CPU を使用したシステムで、この例を非常に遅いスレッドで経験しました。MySQL に接続するのに長い時間 (1 分近く)がかかる場合があり、まさにそれをシャットダウンするほどの時間がかかります。1 台の複数の CPU を使用したシステムでは、クライアント数が増えるに従ってクエリの速度が徐々に遅くなっていきました。解決策を探す段階で、弊社のユーザーの 1 社からユーザーのサイトで効果があったとのことで kernel のパッチが届けられました。このパッチは http://dev.mysql.com/Downloads/Patches/linux-fork.patch で利用できます。.弊社ではこのパッチに弊社の開発や実際の生産システムを含む広範なテストを実施しました。そのパッチは何ら問題なく MySQL のパフォーマンスを大幅に改善しましたので、弊社では高負荷のサーバを 2.2 kernel で運用している弊社のユーザーに推薦しました。

この問題は 2.4 kernel では修正されているため、現在稼働中のシステムのパフォーマンスに満足しされていない場合には 2.2 のパッチ版よりはむしろ、2.4 へのアップグレードするほうが容易です。SMP システムでは、アップグレードすることによって既知のバグの修正に加えて SMP のブーストがよくなります。

弊社では MySQL を 2.4 kernel で 2 つの CPU を搭載したマシンでテストしましたが MySQL スケールが 大幅に 良くなっています。1,000 クライアントまでのテストを実施している間に実質的にクエリの減速がなく、MySQL スケーリング ファクターは (最大のスループットと 1 台のクライアント スループットの比率を計算したもの) は 180% でした。.CPU を 4 つ搭載したシステムでも同様の結果が得られました。クライアント数を 1,000 まで増やしても実質的な減速がなく、スケーリング ファクターは 300% でした。これらの結果に基づいて、2.2 kernel を使用した高負荷の SMP サーバには、弊社でこの段階で 2.4 kernel にアップグレードするよう強くお勧めします。

最高のパフォーマンスを実現するには最優先課題として mysqld を 2.4 kernel で動作させることが必須であるということが分かりました。これを行うには renice -20 $$ コマンドを mysqld_safe に追加します。4 CPU 搭載マシン上での弊社のテストでは、その優先度を上げることによって 400 クライアントまでの増加の間に 60% の結果が出ました。

弊社では現在 2.4 kernel を four-way および eight-way のシステムで使用した場合 MySQL の性能がどのように良くなるか情報を集めています。お客様がその様なシステムにアクセスして何かベンチマークを行った場合、その結果を まで Eメール頂ければ幸甚です。.弊社ではそれを検討してマニュアルに追加するかどうかを検討します。

psmysql サーバプロセスがデッドした場合、これは通常 MySQL にバグがあるかあるいはテーブルが破損していることを意味します。項B.1.4.2. 「What to Do If MySQL Keeps Crashing」 参照。

mysqldSIGSEGV 信号でデッドした場合に Linux でコア ダンプを取得するには、mysqld--core-file オプションで起動します。多分コア ファイルのサイズを ulimit -c 1000000mysqld_safe に追加あるいは mysqld_safe--core-file-size=1000000 で起動して増やす必要があります。.項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 参照。

2.13.1.5. Linux x86 注釈

MySQL には libc 5.4.12 あるいはそれ以降が必要です。libc 5.4.46 での動作は確認されています。glibc 2.0.6 およびそれ以降もまた動作します。Red Hat 社の glibc RPM に問題があります。問題が発生した場合には、何か更新があるかチェックしてください。glibc 2.0.7-19 および 2.0.7-29 RPM の動作は確認されています。

Red Hat 8.0 あるいは新しい glibc 2.2.x ライブラリを使用している場合、mysqldgethostbyaddr() でデッドする場合があります。これは新しい glibc ライブラリのこの呼び出しにスタック サイズ 128KB 以上が必要だからです。この問題を修正するには、mysqld--thread-stack=192K オプションで実行します。(MySQL 4 の前に -O thread_stack=192K を使用します。)このスタック サイズはMySQL 4.0.10 あるいはそれ以降ではデフォルトですので、問題が発生することはないはずです

MySQL のコンパイルに gcc 3.0 あるいはそれ以降を使用している場合、MySQL をコンパイルする前に libstdc++v3 ライブラリをインストールする必要があります。それをインストールしなかった場合、リンク中に __cxa_pure_virtual 記号が不明のメッセージが表示されます。

Linux ディストリビューションの旧バージョンの中には、configure が以下のようなエラーを表示するものもあります。

Syntax error in sched.h. Change _P to __P in the
/usr/include/sched.h file.
See the Installation chapter in the Reference Manual.

エラーメッセージに従ってその通りに作業します。アンダースコアが 1 つだけの _P マクロ名にもう 1 つのアンダースコアを加えて、再度試します。

コンパイルする時に警告が発せられる場合があります。以下の表示は無視して構いません。

mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to
`long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to
`long unsigned int'

mysqld が起動する時に常にコアをダンプする場合は、その問題は多分旧 /lib/libc.a に因ります。.その名前を変更し、次に sql/mysqld を削除し、新たに make install を行い再度試します。この問題は Slackware のインストールで既に幾つか報告を受けております。

mysqld をリンク中に以下のエラーが表示された場合、libg++.a が正しくインストールされていないことを意味します。

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'

configure を以下のように実行すると libg++.a を使用しないで済みます。

shell> CXX=gcc ./configure

2.13.1.6. Linux SPARC に関する注釈

実装の際に、readdir_r() が破損する場合があります。その兆候としては SHOW DATABASES ステートメントが常に空のセットを返します。これは設定後のコンパイルする前に HAVE_READDIR_Rconfig.h から削除することで修正できます。

2.13.1.7. Linux Alpha に関する注釈

弊社の MySQL 5.1 の Alpha でのベンチマークおよびテスト スィートのテストでは、動作に問題がないものと思われます。

弊社では現在 MySQL のバイナリ パッケージを AXP 用 SuSE Linux 7.0、kernel 2.4.4-SMP、Compaq C compiler (V6.2-505) および Compaq C++ compiler (V6.3-006) に対して Alpha EV6 プロセッサを搭載した Compaq DS20 マシンでビルドしています。

供述のコンパイラは http://www.support.compaq.com/alpha-tools/ にあります。.これらのコンパイラを gcc の代わりに使用して、およそ 9-14% ほどよい MySQL パフォーマンスが出ています。

Alpha の MySQL には、-arch generic フラグをコンパイルに使用しており、このことはそのバイナリはすべての Alpha プロセッサで動作することを意味しています。また、バイナリの問題を避けるために静的にコンパイルしています。configure コマンドは以下のようになります。

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx \
CXXFLAGS="-fast -arch generic -noexceptions -nortti" \
./configure --prefix=/usr/local/mysql --disable-shared \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared

egcs を使用する場合、以下の configure 行が弊社では機能しました。

CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --disable-shared

MySQL を Linux-Alpha で動作させた場合の既知の問題:

  • スレッド アプリケーションの MySQL のようなデバッグはgdb 4.18 ではうまくいきません。.代わりに gdb 5.1 を使用する必要があります。

  • gcc を使用して mysql を静的にリンクすると、結果のイメージが起動時にコアをダンプします。換言すると、--with-mysqld-ldflags=-all-staticgcc では使用しない ということになります。

2.13.1.8. Linux PowerPC に関する注釈

MySQL は MkLinux 上では最新の glibc パッケージで動作します (glibc 2.0.7 でのテスト)。

2.13.1.9. Linux MIPSに関する注釈

MySQL を Qube2 (Linux Mips) で動作させるには、最新の glibc ライブラリが必要です。glibc-2.0.7-29C2 は動作するといわれています。また egcs C++ コンパイラ (egcs 1.0.2-9、gcc 2.95.2 あるいはそれ以降) を使用する必要があります。

2.13.1.10. Linux IA-64 に関する注釈

MySQL を Linux IA-64 でコンパイルするには、弊社では以下の configure コマンドを gcc 2.96 でビルドする際に使用しています。

CC=gcc \
CFLAGS="-O3 -fno-omit-frame-pointer" \
CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
    ./configure --prefix=/usr/local/mysql \
    "--with-comment=Official MySQL binary" \
    --with-extra-charsets=complex

IA-64 には、MySQL クライアントは共有バイナリを使用します。このことは弊社のバイナリ ディストリビューションを /usr/local/mysql と異なるロケーションにインストールするには、libmysqlclient.so をインストールしたディレクトリのパスを /etc/ld.so.conf ファイルあるいは LD_LIBRARY_PATH 環境変数の値のいずれかに追加する必要があります。

項B.1.3.1. 「Problems Linking to the MySQL Client Library」 を参照してください。

2.13.1.11. SELinux の注釈

RHEL4 は SELinux と一緒に出荷され、プロセスのタイトなアクセスをサポートします。If SELinux が有効になると (/etc/selinux/configSELINUXenforcing に設定され、SELINUXTYPEtargeted あるいは strict のいずれかに設定される)、MySQL AB RPM パッケージをインストールする際に問題に遭遇する場合があります。

Red Hat 社にはこの問題を修正する更新版があります。その中にはMySQL AB が提供した RPM のインストール構成を処理する 「セキュリティ ポリシー」 の仕様が含まれています。詳細は、https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167551 および http://rhn.redhat.com/errata/RHBA-2006-0049.html を参照してください。

2.13.2. Mac OS X に関する注釈

On Mac OS X、tar は長いファイル名は扱えません。.tar.gz ディストリビューションの解凍はが必要な場合は、gnutar を参照してください。

2.13.2.1. Mac OS X 10.x (Darwin)

MySQL は大きな問題なしに Mac OS X 10.x (Darwin) で動作する必要があります。

既知の問題:

  • 高負荷でパフォーマンスに問題がある場合には、--skip-thread-priority オプションを mysqld に試してみてください。これによりすべてのスレッドを同じ優先度で実行します。On Mac OS X、これは Apple 社が少なくともそのスレッド スケジューラを修正すれば、優れたパフォーマンスを提供します。

  • 接続回数 (wait_timeoutinteractive_timeout および net_read_timeout) は保証されていません。

    これは多分にスレッド ライブラリの信号処理の問題で、信号が未処理の読み込みを終了できないためで、今後のスレッド ライブラリの更新でこの問題の修正を期待しています。

弊社の Mac OS X 用バイナリは Darwin (ダーウィン)6.3 に以下の configure 行でコンパイルしています。

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti" \
    ./configure --prefix=/usr/local/mysql \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --enable-local-infile --disable-shared

項2.5. 「Mac OS X に MySQL をインストールする」 を参照してください。

2.13.2.2. Mac OS X Server 1.2 (Rhapsody)

現在の Mac OS X サーバには、MySQL をコンパイルする前のオペレーティング システムの変更は必要ありません。サーバ プラットフォームのコンパイルは Mac OS X のクライアント バージョンの場合と同じです。

旧バージョン (Mac OS X Server 1.2、a.k.a. Rhapsody) には、MySQL を設定する前に最初に pthread パッケージをインストールする必要があります。

項2.5. 「Mac OS X に MySQL をインストールする」 を参照してください。

2.13.3. Solaris に関する注釈

PKG ディストリビューションを使用した Solaris への MySQL のインストールに関する情報は、項2.6. 「Solaris に MySQL をインストールする」 を参照してください。

Solaris の tar が長いファイル名を扱えないので、Solaris を使用する際、MySQL のディストリビューションを解凍する前でさえ、問題に遭遇する場合があります。これは MySQL を解凍する時にエラーが表示されることを意味します。

この問題が発生したら、GNU tar (gtar) を使用してディストリビューションを解凍します。Solaris 用にコンパイルしたコピーは http://dev.mysql.com/downloads/os-solaris.html にあります。

Sun のネイティブ スレッドは Solaris 2.5 およびそれ以降でしが動作しません。Solaris 2.4 およびそれ以前には、MySQL 自動的に MIT-pthreads を使用します。項2.9.5. 「MIT-pthreads ノート」 参照。

configure で以下のエラーが表示された場合には、コンパイラのインストールに問題があることを意味しています。

checking for restartable system calls... configure: error can not
run test programs while cross compiling

この場合、コンパイラを新しいバージョンにアップグレードします。この問題を config.cache ファイルに以下の行を追加することでも解決できる場合があります。

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

SPARC で Solaris を使用している場合、推奨しているコンパイラは gcc 2.95.2 あるいは 3.2 です。これは http://gcc.gnu.org/ にあります。egcs 1.1.1 および gcc 2.8.1 は SPARC では信頼性に欠けます。

gcc 2.95.2 を使用する際に推奨している configure 行は:

CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory \
    --enable-assembler

UltraSPARC システムの場合、-mcpu=v8 -Wa,-xarch=v8plusaCFLAGS および CXXFLAGS 環境変数に追加すると 4 % パフォーマンスが向上します。

Sun の Forte 5.0 (あるいはそれ以降) コンパイラには、configure を以下のように実行します。

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler

Sun の Forte コンパイラで 64 ビットのバイナリを作成するには、以下の設定オプションを使用します。

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler

gcc を使用して 64 ビットの Solaris バイナリを作成するには、-m64CFLAGS および CXXFLAGS に追加して --enable-assemblerconfigure 行から削除します。

MySQL ベンチマークでは、Forte 5.0 を 32 ビットモードで使用すると、gcc 3.2 を -mcpu フラグで使用した場合に比べて UltraSPARC 上で速度が 4% 速くなります。

64-bit mysqld バイナリは、32 ビット バイナリより速度は 4% 遅くなりますが、さらに多くのスレッドおよびメモリを処理できます。

Solaris 10 を x86_64 で使用する場合、InnoDB ファイルを forcedirectio オプションで保持するファイルシステムを実装する必要があります。(デフォルトではこのオプションは実装されていません。)それを実装しないと InnoDB ストレージ エンジンをこのプラットフォームで使用した場合性能が大幅に劣化します。

fdatasync あるいは sched_yield で問題があった場合、LIBS=-lrtconfigure 行に追加すると修正できます。

WorkShop 5.3 以前のコンパイラの場合、configure スクリプトを編集する必要があります。この行を:

#if !defined(__STDC__) || __STDC__ != 1

以下のように変更します。

#if !defined(__STDC__)

__STDC__-Xc オプションで起動すると、Sun のコンパイラは Solaris pthread.h ヘッダーファイルではコンパイルできません。これじゃ Sun のバグです (破損したコンパイラあるいは破損した include ファイル)。

mysqld を実行したときに以下のエラーメッセージが表示された場合、-mt マルチ スレッド オプションを有効にしないで MySQL を Sun のコンパイラでコンパイルしてみます。

libc internal error: _rmutex_unlock: rmutex not held

-mtCFLAGS および CXXFLAGS 追加して再コンパイルします。

gcc の SFW バージョン (Solaris 8 に同梱) を使用する場合、/opt/sfw/lib を環境変数 LD_LIBRARY_PATHconfigure を実行数r前に追加します。

gccsunfreeware.com から入手して使用する場合、多くの問題が発生する場合があります。これを避けるには、gcc および GNU binutils をそれらを動作しているマシンでコンパイルする必要があります。

MySQL を gcc でコンパイル中に以下のエラーが表示された場合、gcc が 使用している Solaris のバージョンに合っていないことを意味します。

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'

この場合の適切な方法は gcc の最新バージョンを入手してそれを現在の gcc コンパイラでコンパイルすることです。少なくても Solaris 2.5、gcc のほとんどすべてのバイナリ バージョンは古くて、使用できない include ファイルを使用しており、スレッドを使用するすべてのプログラムを破損し、同様に他のプログラムも破損させる可能性があります。

Solaris ではどのシステム ライブラリも静的バージョン (libpthreads および libdl) を提供していませんので、MySQL を --static でコンパイルすることはできません。.コンパイルしようとすると、以下のエラーが表示されます。

ld: fatal: library -ldl: not found
undefined reference to `dlopen'
cannot find -lrt

お客様ご自身の MySQL クライアント プログラムをリンクさせる場合、ランタイムで以下のエラーが表示される場合があります。

ld.so.1: fatal: libmysqlclient.so.#:
open failed: No such file or directory

この問題は以下のメソッドのいずれかで回避できます。

  • クライアントを -Lpath ではなく -Wl,r/full/path/to/libmysqlclient.so フラグにリンクします。

  • libmysqclient.so/usr/lib にコピーします。

  • クライアントを起動する前に libmysqlclient.so のディレクトリのパス名を LD_RUN_PATH 環境変数に追加します。

zlib をインストールせずに -lz にリンクする際 configure に問題がある場合、2 つのオプションがあります。

  • 圧縮通信プロトコルを使用するには、zlibftp.gnu.org から取得してインストールします。

  • MySQL をビルドするには configure--with-named-z-libs=no オプションで実行します。

gcc を使用してユーザー定義関数 (UDFs) の MySQL へのロードで問題がある場合、-lgcc を UDF のリンク行に追加してみます。.

MySQL 自動的に起動するには、support-files/mysql.server/etc/init.d にコピーして、シンボリック リンクを /etc/rc3.d/S99mysql.server の名前のそれに作成します。.

あまりにも多くのプロセスが急激に mysqld に接続を試みた場合、MySQL ログに以下のエラーが記録されます。

Error in accept: Protocol error

この問題の回避策としてサーバを --back_log=50 オプションで起動してみます。(MySQL 4 の前に -O back_log=50 を使用します。)

Solaris は setuid() アプリケーションのコア ファイルをサポートしていないので、--user オプションを使用している場合、コア ファイルを mysqld から取得できません。

2.13.3.1. Solaris 2.7/2.8 に関する注釈

通常、Solaris 2.6 のバイナリを Solaris 2.7 および 2.8 で使用できます。Solaris 2.6 公開版のほとんどもまた Solaris 2.7 および 2.8 に適用できます。

MySQL は自動的に Solaris の新バージョンを検知して以下の問題に対して回避策を取ります。

Solaris 2.7 / 2.8 の include ファイルにはいくつかバグがあります。gcc を使用すると以下のエラーが表示される場合があります。

/usr/include/widec.h:42: warning: `getwc' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous
definition

この問題が発生したら /usr/include/widec.h.../lib/gcc-lib/os/gcc-version/include にコピーして行 41 を以下から:

#if     !defined(lint) && !defined(__lint)

以下のように変更します。

#if     !defined(lint) && !defined(__lint) && !defined(getwc)

また、/usr/include/widec.h を直接編集することもできます。いずれの場合も、修正を加えた後に config.cache を削除し configure を再度実行します。

make を実行した時に以下のエラーが表示された場合、configurecurses.h ファイルを検知できなかったことを意味します (多分 /usr/include/widec.h のエラーによる)。

In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,'
/usr/include/term.h:1081: syntax error before `;'

この問題を解決するには以下のいずれかを実行します。

  • CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure で設定する。

  • /usr/include/widec.h を前述の説明に従って編集し configure を再度実行する。

  • #define HAVE_TERM 行を config.h ファイルから削除し make を再度実行する。

クライアント プログラムをリンク中にリンカが -lz を見つけられない場合、その問題は多分 libz.so ファイルが /usr/local/lib にインストールされているからです。この問題を解決するには以下のメソッドのいずれかを実行します。

  • /usr/local/libLD_LIBRARY_PATH に追加する。

  • リンクを libz.so/lib から追加する。

  • Solaris 8 を使用している場合、オプションの zlib を Solaris 8 CD ディストリビューションからインストールできます。

  • MySQL をビルドするには configure--with-named-z-libs=no オプションで実行します。

2.13.3.2. Solaris x86 に関する注釈

x86 の Solaris 8 では、strip を使用してデバッグ記号を削除すると mysqld がコアをダンプします。strip.

gcc あるいは egcs を Solaris x86 で使用中の負荷下でにコア ダンプの問題が発生したら、以下の configure コマンドを使用します。

CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
    -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \
./configure --prefix=/usr/local/mysql

これにより libstdc++ ライブラリおよび C++ 例外で問題を回避します。

これで問題が解決できない場合、デバッグ バージョンをコンパイルし、それをトレース ファイルあるいは gdb で実行します。Debugging mysqld under gdb 参照。

2.13.4. BSD に関する注釈

この項では MySQL を異なる BSD Unix で使用する際の情報を提供します。.

2.13.4.1. FreeBSD に関する注釈

スレッド パッケージよく統合されているため、MySQL の使用に FreeBSD 4.x あるいはそれ以降の使用をお勧めします。セキュアで安定してシステムにするには、-RELEASE の印の付いた FreeBSD kernel のみを使用します。

MySQL のインストールで最も容易(で推奨される)な方法は mysql-server ポートおよび mysql-client ポートを使用することです。それらは http://www.freebsd.org/ で入手できます。これらのポート使用することで以下のメリットがあります。

  • FreeBSD バージョンで動作することが知られているすべての最適化を行った MySQL

  • 自動設定およびビルド

  • /usr/local/etc/rc.d にインストールされた自動スクリプト

  • どのファイルがインストールされているかを確認するための pkg_info -L の使用

  • お客さまのマシンで MySQL をもはや必要ない場合にそれを削除できる pkg_delete の使用

MIT-pthreads を FreeBSD 2.x で、ネイティブ スレッドを FreeBSD 3 およびそれ以降で使用するようお勧めします。ネイティブ スレッドを 2.2.x バージョンで動作できますが、mysqld のシャットダウンの問題が発生する場合があります。

不幸にも、FreeBSD のある種の関数のコールがまだ完全にスレッド セーフになっていません。最も注目に値するのは、これには gethostbyname() 関数が含まれているので、これによって MySQL でホスト名を IP アドレスに変換できます。ある環境下では、mysqld プロセスが突然 100% CPU 負荷になり、応答がなくなります。この問題に遭遇した場合には、--skip-name-resolve オプションを使用して MySQL を起動してみます。

あるいは、FreeBSD の MySQL を LinuxThreads ライブラリにリンクすることによって、ネイティブの FreeBSD のスレッド実装による幾つかの問題を回避することができます。LinuxThreads とネイティブ スレッドの比較をよくまとめた Jeremy Zawodny の記事 あなたの MySQL サーバにどちらを選ぶ、FreeBSD それとも Linux ?http://jeremy.zawodny.com/blog/archives/000697.html にあります。

FreeBSD 上の LinuxThreads の既知の問題:

  • 接続回数 (wait_timeoutinteractive_timeout および net_read_timeout) の値は保証されていません。この問題の兆候としては、接続が執拗に非常に長い間遮断されることなく続き、スレッドの 「停止」の効果がなく スレッドが新しいコマンドによって停止されるまで続きます。

    これは多分スレッド ライブラリの信号処理の問題で信号が未処理の読み込みを中断できないために起こるのものと考えられます。この問題は FreeBSD 5.0 では修正される予定です。

MySQL ビルド プロセスが機能するには GNU make (gmake) が必要です。GNU make が利用できない場合、MySQL をコンパイルする前にインストールする必要があります。

gcc (2.95.2 and up) の FeeBSD に MySQL をコンパイルしてインストールする方法として推奨しているのは:

CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
    CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \
    -felide-constructors -fno-strength-reduce" \
    ./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
bin/mysqld_safe &

configure が MIT-pthreads を使用している場合、MIT-pthreads の注釈を読む必要があります。項2.9.5. 「MIT-pthreads ノート」 参照。

make install から /usr/include/pthreads が見つからないとのエラーが表示された場合、configure が MIT-pthreads に必要なそれを検知しなかったことになります。.この問題を修正するには、config.cache を削除して、次に configure--with-mit-threads オプションで実行します。

名前のリゾルバーが正しく設定されているか確認します。正しく設定されていないと、リゾルバーの遅延あるいは mysqld への接続に失敗します。また、localhost/etc/hosts ファイルへのエントリが正しいか確認します。このファイルは以下のような行で実行されます。

127.0.0.1       localhost localhost.your.domain

FreeBSD は非常に小さいデフォルトのファイル処理制限があることで知られています。項B.1.2.17. 「'File' Not Found and Similar Errors」 参照。サーバを --open-files-limit オプションを使用して mysqld_safe に起動しするか、あるいは /etc/login.confgmysql ユーザーの制限を上げそれを cap_mkdb /etc/login.conf で再度ビルドします。また、デフォルト (chpass mysqld-user-name を使用する) を使用していない場合、パスワード ファイルのこのユーザーに適切なクラスを設定しているか確認します。項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 参照。

FreeBSD の制限はで、システムに利用できる大きな RAM がある場合でも、プロセスのサイズを 512MB に制限します。それで以下のようなエラーが表示されます。

Out of memory (Needed 16391 bytes)

現在のバージョンの FreeBSD (最低でも 4.x およびそれ以降) では、この制限を以下のエントリを /boot/loader.conf ファイルに追加し、マシンをリブートして増やすことができます (これらはランタイム時に sysctl コマンドで変更できる設定ではありません)。

kern.maxdsiz="1073741824" # 1GB
kern.dfldsiz="1073741824" # 1GB
kern.maxssiz="134217728" # 128MB

FreeBSD の旧バージョンでは、kernel を再コンパイルしてプロセスの最大データ セグメント サイズを変更する必要があります。この場合の詳細に関しては LINT 設定ファイルの MAXDSIZ オプションを参照してください。

MySQL の現在の日付で問題がある場合には、TZ 変数の設定が役に立ちます。項2.14. 「環境変数」 参照。

2.13.4.2. NetBSD に関する注釈

NetBSD でコンパイルするには、GNU make が必要です。それがないと、ビルド プロセスは makelint を C++ ファイルで実行する際に失敗します。

2.13.4.3. OpenBSD 2.5 に関する注釈

OpenBSD 2.5 では、MySQL をネイティブのスレッドで以下のオプションを使用してコンパイルできます。

CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no

2.13.4.4. BSD/OS Version 2.x に関する注釈

MySQL をコンパイル中に以下のエラーが表示された場合、仮想メモリの ulimit 値が小さすぎます。

item_func.h: In method
`Item_func_ge::Item_func_ge(const Item_func_ge &)':
item_func.h:28: virtual memory exhausted
make[2]: *** [item_func.o] Error 1

ulimit -v 80000 を使用して試し make を再度実行します。.これで修正できずしかも bash を使用している場合には、csh あるいは sh に切り替えてみます。BSDI のユーザー数社から bashulimit の問題が報告されています。

gcc を使用している場合、--with-low-memory フラグを configure に使用して sql_yacc.cc をコンパイルすることもできます。

MySQL の現在の日付で問題がある場合には、TZ 変数の設定が役に立ちます。項2.14. 「環境変数」 参照。

2.13.4.5. BSD/OS Version 3.x に関する注釈

BSD/OS 3.1 へのアップグレード。アップグレードできかなった場合、BSDIpatch M300-038 をインストールします。

MySQL を設定する際以下のコマンドを使用します。

env CXX=shlicc++ CC=shlicc2 \
./configure \
    --prefix=/usr/local/mysql \
    --localstatedir=/var/mysql \
    --without-perl \
    --with-unix-socket-path=/var/mysql/mysql.sock

以下が動作することが知られています。

env CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure \
    --prefix=/usr/local/mysql \
    --with-unix-socket-path=/var/mysql/mysql.sock

任意にディレクトリのロケーションを変更できます。特に指定するロケーションがない場合はデフォルトを使用します。

高負荷でパフォーマンスに問題がある場合には、--skip-thread-priority オプションを mysqld に試してみてください。これによりすべてのスレッドを同じ優先度で実行します。BSDI 3.1では、少なくとも BSDI がそのスレッド スケジューラを修正すればよい性能がでます。

コンパイル中にエラー virtual memory exhausted が表示されたら、ulimit -v 80000 を使用してみて make を再度実行します。これで修正できずしかも bash を使用している場合には、csh あるいは sh に切り替えてみます。BSDI のユーザー数社から bashulimit の問題が報告されています。

2.13.4.6. BSD/OS Version 4.x に関する注釈

BSDI 4.x にはスレッド関連のバグが幾つかあります。これに MySQL を使用する場合には、スレッド関連のすべてのパッチをインストールする必要があります。少なくとも M400-023 はインストールしてください。

BSDI 4.x システム上で、共有ライブラリに問題がある場合もあります。問題の兆候としては、どのクライアント プログラムも、例えば mysqladmin を実行できません。.この場合、共有ライブラリを --disable-shared オプションで設定しないように再設定します。

カスタマーの中には BSDI 4.0.1 で mysqld バイナリがしばらくの間テーブルを開かないとの問題が出ています。この問題はライブラリ/システム関連のバグによって mysqld が現在のディレクトリの変更要求を出さずに現在のディレクトリを変更するからです。

これを修正するには MySQL を最低でもバージョン 3.23.34 にアップグレードするか、configure の実行後に行 #define HAVE_REALPATHconfig.h から make を実行する前に削除します。

これはデータベース ディレクトリをシンボリカルに別のデータベース ディレクトリにリンクできない、あるいはテーブルを別のデータベースにシンボリックにリンクできないことを意味します。(シンボリックに別のディスクにリンクすることはできます)。

2.13.5. 他の Unix に関する注釈

2.13.5.1. HP-UX バージョン 10.20 に関する注釈

MySQL を HP-UX 上でコンパイルする際に 2, 3 の小さな問題があります。gcc がよいコードを生成しますので HP-UX ネイティブ コンパイラではなく gcc の使用をお勧めします。

gcc 2.95 を HP-UX 上で使用することをお勧めしています。高最適化のフラグ (-O6 など) は HP-UX 上では安全ではないので使用しないでください。

以下の configure 行は gcc 2.95 で作用します。

CFLAGS="-I/opt/dce/include -fpic" \
CXXFLAGS="-I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" \
CXX=gcc \
./configure --with-pthread \
    --with-named-thread-libs='-ldce' \
    --prefix=/usr/local/mysql --disable-shared

以下の configure 行は gcc 3.1 で作用します。

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors \
    -fno-exceptions -fno-rtti -O3 -fPIC" \
./configure --prefix=/usr/local/mysql \
    --with-extra-charsets=complex --enable-thread-safe-client \
    --enable-local-infile  --with-pthread \
    --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
    --disable-shared

2.13.5.2. HP-UX バージョン 11.x に関する注釈

標準の HP-UX ライブラリに深刻なバグが幾つかあるため、以下のパッチを MySQL を HP-UX 11.0 上で動作させる前にインストールします。

PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative

これにより EWOULDBLOCKrecv() から EBADFaccept() をスレッド化したアプリケーションで取得する問題を解決します。

gcc 2.95.1 をパッチなしの HP-UX 11.x システムで使用すると、以下のエラーが発生する場合があります。

In file included from /usr/include/unistd.h:11,
                 from ../include/global.h:125,
                 from mysql_priv.h:15,
                 from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
                 from mysql_priv.h:158,
                 from item.cc:19:

この問題は HP-UX が pthreads_atfork() を安定的に定義しないために起こります。I/usr/include/sys/unistd.h:184 および /usr/include/sys/pthread.h:440 に衝突するプロトタイプがあります。

一つの解決策としては /usr/include/sys/unistd.hmysql/include にコピーして unistd.h を編集しそれを pthread.h の定義に一致させます。以下の行を探します。

extern int pthread_atfork(void (*prepare)(), void (*parent)(),
                                          void (*child)());

それを以下のように変更します。

extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
                                          void (*child)(void));

変更すると以下の configure 行が作用します。

CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared

HP-UX コンパイラを使用している場合、以下のコマンド (cc B.11.11.04 でテスト済み) を使用できます。

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure \
    --with-extra-character-set=complex

以下のようなエラーは無視できます。

aCC: warning 901: unknown option: `-3': use +help for online
documentation

configure で以下のようなエラーが表示された場合、HP-UX C および C++ コンパイラへのパスの前に K&R のパスがないことを確認します。

checking for cc option to accept ANSI C... no
configure: error: MySQL requires an ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.

コンパイルできない別の原因としては説明通りに +DD64 フラグを定義しなかったことが考えられます。

HP-UX 11 の別の可能性としては弊社でビルドしてテストした http://dev.mysql.com/downloads/ で提供している MySQL バイナリを使用することです。MySQL により提供された HP-UX 10.20 バイナリは HP-UX 11 上で問題なく動作するとの報告が入ってきています。問題が発生した場合には HP-UX のパッチレベルをチェックする必要があります。

2.13.5.3. IBM-AIX に関する注釈

xlC の自動検知が Autoconf で不明のため、configure を実行する前に多くの変数を設定する必要があります。以下の例では IBM コンパイラを使用しています。

export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

./configure --prefix=/usr/local \
                --localstatedir=/var/mysql \
                --sbindir='/usr/local/bin' \
                --libexecdir='/usr/local/bin' \
                --enable-thread-safe-client \
                --enable-large-files

前述のオプションを使用して http://www-frec.bull.com/ にある MySQL ディストリビューションをコンパイルします。

前述のcofigure 行の -O3-O2 に変更すると、-qstrict オプションも削除できます。これが IBM C コンパイラの制限です。

MySQL のコンパイルに gcc あるいは egcs を使用する場合、-fno-exceptions フラグを使用する必要があります。なぜなら gcc/egcs の例外処理はスレッド セーフではないからです!(これは egcs 1.1 でテスト済み。)IBM のコンパイラには gcc を使用すると間違ったコードを生成する未詳の問題があります。

以下の configure 行を AIX の egcs および gcc 2.95 にお勧めします。

CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory

コンパイルを成功させるには -Wa,-many オプションが必要です。IBM はこの問題を認識していますが、回避策があるためにこの問題の修正にはそれほど急いでいません。MySQL は例外を使用しておらず、オプションが高速のコードを生成し、それを常にegcs / gcc と一緒に使用するように勧めているため、-fno-exceptionsgcc 2.95 に必要かは定かではありません。

アセンブラのコードで問題が発生した場合には、-mcpu=xxx オプションを CPU に合うように変更してみてください。.一般的には power2power、あるいは powerpc が必要です。.604 あるいは 604e が必要になる場合もあります。確かではありませんが power はほとんどの時間、power2 マシン上でも安全だと思われます。

どの CPU を使用しているか分からない場合には、uname -m コマンドを実行します。それによって 000514676700 のような文字列を生成し、フォーマットはxxyyyyyymmssxx および ss は常に 00 で、yyyyyy は一意のシステム ID で mm は CPU Planar の ID です。これらの値のチャートは http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm にあります。

これによりどんな CPU を使用しているかを決めるマシンの種類とマシンのモデルが分かります。

信号の問題 (MySQL が高負荷で突然停止する)がある場合、スレッドおよび信号の OS バグがある場合があります。この場合、以下のように設定して MySQL が信号を使用しないようにします。

CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
-DDONT_USE_THR_ALARM" \
./configure --prefix=/usr/local/mysql --with-debug \
    --with-low-memory

これによって MySQL の性能には影響ありませんが、mysqladmin kill あるいは mysqladmin shutdown と接続して 「sleeping」 しているクライアントを切断できなくなる副作用がでます。その代わり、クライアントはそれが次のコマンドを発行した時に切断します。

AIX バージョンの中には、libbind.a とリンクするこによって getservbyname() ダンプ コアを作成します。.これは AIX のバグですので IBM への報告する必要があります。

For AIX 4.2.1 および gcc で、以下の変更が必要です。

設定後、config.h および include/my_config.h を編集して行を以下のように変更します。

#define HAVE_SNPRINTF 1

に変更します。

#undef HAVE_SNPRINTF

最後に、mysqld.cc で、initgroups() にプロトタイプを追加する必要があります。

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif

mysqld プロセスに大きなメモリを割り当てる必要がある場合、ulimit -d unlimited を使用するだけでは十分ではありません。mysqld_safe も変更して以下のような行を追加する必要があります。

export LDR_CNTRL='MAXDATA=0x80000000'

大きなメモリの使用に関する詳細は http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm にあります。

AIX 4.3 のユーザーは AIX にある make ユーティリティの代わりに gmake を使用する必要があります。

AIX 4.1 では、C コンパイラは個別の製品として AIX とはバンドルしていません。ここで入手できる gcc 3.3.2 を弊社としては推奨しています。 ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gcc/

AIX 上の gcc 3.3.2 で MySQL をコンパイルするステップは gcc 2.95 (特に config.h および my_config.hconfigure 実行後に編集する必要性) を使用したステップに似ています。しかし、configure を実行する前に、curses.h ファイルを以下のようにパッチする必要があります。

/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h.ORIG
       Mon Dec 26 02:17:28 2005
--- /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses.h
Mon Dec 26 02:40:13 2005
***************
*** 2023,2029 ****


  #endif /* _AIX32_CURSES */
! #if defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus) || defined
(__STRICT_ANSI__)
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);
--- 2023,2029 ----


  #endif /* _AIX32_CURSES */
! #if 0 && (defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus)
|| defined
(__STRICT_ANSI__))
  extern int delwin (WINDOW *);
  extern int endwin (void);
  extern int getcurx (WINDOW *);

2.13.5.4. SunOS 4 に関する注釈

SunOS 4 では、MySQL をコンパイルするには MIT-pthreads が必要です。これはつまり GNU make が必要だということを意味します。

SunOS 4 システムのに中には動的ライブラリとlibtool に問題がありものがあります。.この問題を回避するには以下の configure 行を使用します。

./configure --disable-shared --with-mysqld-ldflags=-all-static

readline をコンパイルする際、二重の定義で警告が出る場合があります。これらは無視して構いません。

mysqld をコンパイルする際、implicit declaration of function 警告がでます。これらは無視して構いません。

2.13.5.5. Alpha-DEC-UNIX に関する注釈 (Tru64)

Digital Unix で egcs 1.1.2 を使用する際、DEC 上の egcs に幾つかの重大なバグがあるので gcc 2.95.2 にアップグレードする必要があります。

Digital Unix でスレッド化したプログラムをコンパイルするには、説明資料では -pthread オプションを cc および cxx および -lmach -lexc ライブラリ (-lpthread に加えて) 使用することを勧めています。configure を以下のように実行します。

CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"

mysqld をコンパイルする際、以下のような警告が表示される場合があります。

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'

これらの警告は無視しても問題ありません。これは configure が警告ではなくエラーだけを検知するために起こります。

コマンドラインからサーバを直接起動すると、ログアウトしたときにサーバが停止する場合があります。(ログアウトすると、未処理のプロセスが SIGHUP 信号を受信します。.)その場合、サーバを以下のように起動してみます。

nohup mysqld [options] &

nohup はそれに続くコマンドに端末から送信された SIGHUP 信号を無視させます。その代わりに、mysqld_safe を実行してサーバを起動し、それが nohup を使用して mysql を呼び出します。項4.3.1. 「mysqld_safe — MySQL サーバ スタートアップ スクリプト」 参照。

mysys/get_opt.c をコンパイル中に問題が発生したら、#define _NO_PROTO 行をそのファイルに起動から削除します。

Compaq の CC コンパイラを使用している場合、以下の configure 行が作用します。

CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed \
        -speculate all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed \
          -speculate all -arch host -noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
    --prefix=/usr/local/mysql \
    --with-low-memory \
    --enable-large-files \
    --enable-shared=yes \
    --with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake

以下に示すように共有ライブラリでコンパイル中に libtool で問題があった場合、mysql のリンク中に、以下のコマンドを発行してこの問題を回避します。

cd mysql
/bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF \
    -O4 -ansi_alias -ansi_args -fast -inline speed \
    -speculate all \ -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R \
    -o mysql  mysql.o readline.o sql_string.o completion_hash.o \
    ../readline/libreadline.a -lcurses \
    ../libmysql/.libs/libmysqlclient.so  -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db

2.13.5.6. Alpha-DEC-OSF/1 に関する注釈

コンパイル中の問題が発生し DEC CC and gcc をインストールしている場合、configure を以下のように実行してみます。

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

c_asm.h ファイルに問題がある場合、 ダミーの c_asm.h ファイルを作成してそれを使用します。

touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

以下の ld プログラムの問題は最新の DEC (Compaq) パッチ キットを次からダウンロードすることで修正できます。 http://ftp.support.compaq.com/public/unix/.

OSF/1 V4.0D およびコンパイラ 「DEC C V5.6-071 on Digital Unix V4.0 (Rev. 878)」 ではそのコンパイラはいくつかの予想外の振る舞い(未定義の asm 記号) をしました。/bin/ld も破損すると思われます (mysqld のリンク中の _exit undefined エラーの問題)。このシステムでは、MySQL を以下の configure 行で /bin/ld を OSF 4.0C バージョン置き換えた後に何とかコンパイルできました。

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

With the Digital compiler "C++ V6.1-029," the following should work:

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
       -speculate all -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \
         -speculate all -arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql \
            --with-mysqld-ldflags=-all-static --disable-shared \
            --with-named-thread-libs="-lmach -lexc -lc"

OSF/1 のバージョンのいくつかでは、alloca() 関数が壊れます。この問題は 'HAVE_ALLOCA' を定義する config.h の行を削除して修正します。

alloca() 関数も不正確なプロトタイプを /usr/include/alloca.h に持つ場合があります。これに由来するこの警告は無視できます。

configure は以下のスレッド ライブラリを自動的に使用します。--with-named-thread-libs="-lpthread -lmach -lexc -lc".

gcc を使用する際、configure を以下のように実行してみます。

CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ...

信号の問題 (MySQL が高負荷で突然停止する)がある場合、スレッドおよび信号の OS バグがある場合があります。この場合、以下のように設定して MySQL が信号を使用しないようにします。

CFLAGS=-DDONT_USE_THR_ALARM \
CXXFLAGS=-DDONT_USE_THR_ALARM \
./configure ...

これによって MySQL の性能には影響ありませんが、mysqladmin kill あるいは mysqladmin shutdown と接続して 「sleeping」 しているクライアントを切断できなくなる副作用が出ます。その代わり、クライアントはそれが次のコマンドを発行した時に切断します。

gcc 2.95.2 では、以下のコンパイラ エラーが発生する場合があります。

sql_acl.cc:1456: Internal compiler error in `scan_region',
at except.c:2566
Please submit a full bug report.

この問題を修正するには、sql ディレクトリに変更して gcc の最後の行を切り取り/貼り付けし、-O3-O0 (あるいは-O オプションがコンパイル行にない場合は -O0gcc の直ぐ後に追加する) に変更します。この変更を行った後、ディレクトリの上段に戻り make を再度実行します。

2.13.5.7. SGI Irix に関する注釈

MySQL 5.0 では、Irix にはもはやバイナリを提供していません。

Irix 6.5.3 あるいはそれ以降を使用している場合、mysqld はそれを CAP_SCHED_MGT 権限 (root など) を有すユーザーとして実行した場合あるいはmysqld サーバにこの権限を以下のシェル コマンドを使用して与えた場合にのみスレッドを作成できます。

chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld

config.h のいくつかの記号の定義を configure を実行した後のコンパイルする前に外す必要がある場合があります。

Irix 実装の中には、alloca() 関数が破損しているものもあります。mysqld サーバが SELECT ステートメントを実行中に停止した場合、HAVE_ALLOC および HAVE_ALLOCA_H を定義した config.h から行を削除します。.mysqladmin create が機能しない場合、HAVE_READDIR_R を定義した config.h から行を削除します。HAVE_TERM_H 行を同様に削除する必要がありかもしれません。

SGI では以下のページのすべてのパッチをこの段階でまとめてインストールすることをお勧めしています。 http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html

最低限の条件として、最新の kernel ロールアップ、最新の rld ロールアップ、および最新の libc ロールアップをインストールする必要があります。

スレッドをサポートするには以下のページのすべての POSIX パッチのインストールが必須です。

http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

mysql.cc をコンパイル中に以下のようなエラーが表示された場合:

"/usr/include/curses.h", line 82: error(1084):
invalid combination of type

MySQL ソース ツリーの最上段のディレクトリに以下を入力します。

extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
make

プログラムのスケジュールに関する問題も報告されています。1 つのスレッドのみが動作している場合、パフォーマンスは低くなります。別のクライアントを起動してこの問題を回避します。他のスレッドを使用することによって実行速度が 2 倍から 10 倍ほど向上します。これは Irix のスレッドの問題に関しての認識の甘さによるものです。この問題が修復されるまでは別の方法を考える必要があります。

gcc でコンパイルする際、以下の configure コマンドを使用します。

CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
    --with-named-thread-libs=-lpthread

Irix 6.5.11 のネイティブ Irix C および C++ コンパイラ バージョン7.3.1.2 では、以下の動作が報告されています。

CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' \
./configure --prefix=/usr/local/mysql --with-innodb \
    --with-libwrap=/usr/local \
    --with-named-curses-libs=/usr/local/lib/libncurses.a

2.13.5.8. SCO UNIX および OpenServer 5.0.x に関する注釈

現在のポートは sco3.2v5.0.5sco3.2v5.0.6、および sco3.2v5.0.7 のシステムのみでテストされたものです。sco3.2v4.2 へのポートのテストも進行中です。 Open Server 5.0.8 (Legend) はネイティブのスレッドで 2GB 以上のファイルが可能です。現在の最大のファイル サイズは 2GB です。

MySQL を以下の configure コマンドで gcc 2.95.3 の OpenServer でコンパイルできます。

CC=gcc CFLAGS="-D_FILE_OFFSET_BITS=64 -O3" \
CXX=gcc CXXFLAGS="-D_FILE_OFFSET_BITS=64 -O3" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client --with-innodb \
    --with-openssl --with-vio --with-extra-charsets=complex

gccftp://ftp.sco.com/pub/openserver5/opensrc/gnutools-5.0.7Kj にあります。

この開発システムは OpenServer 5.0.6 に関する OpenServer 実行環境補足 oss646B が必要です。 oss656B および OpenSource ライブラリは gwxlibs にあります。すべての OpenSource ツールは opensrc ディレクトリにあります。それらは ftp://ftp.sco.com/pub/openserver5/opensrc/ で入手できます。

MySQL の最新の量産リリースの使用をお勧めしています。

SCO ではオペレーティング システムのパッチを ftp://ftp.sco.com/pub/openserver5 で OpenServer 5.0.[0-6] 用、ftp://ftp.sco.com/pub/openserverv5/507 で OpenServer 5.0.7 を提供しています。

SCO では OpenServer 5.0 のセキュリティの修正版に関する情報を ftp://ftp.sco.com/pub/security/OpenServer で提供しています。

OpenSever 5.0.x システムの最大ファイル サイズは 2GB です。

OpenServer 5.0.x ではストリーム バッファ、clists、および ロック レコードに割り当てられる総メモリは 60MB を超えることはできまえん。

ストリーム バッファは 4096 バイト ページ、clists は各 70 バイト、およびロック レコードは各 64 バイトなどの単位で割り当てられます。

(NSTRPAGES × 4096) + (NCLIST × 70) + (MAX_FLCKREC × 64) <= 62914560

データベースのサービス オプションを設定するには以下の手順に従います。アプリケーションが以下が必要かどうか分からない場合には、アプリケーションで提供された説明資料を参照してください。

  1. rootとしてログインします。

  2. /etc/conf/sdevice.d/suds ファイルを編集して SUDS ドライバを有効にします。2 番目のファイルの NY に変更します。

  3. mkdev aio あるいは Hardware/Kernel マネージャを使用して非同期 I/O のサポートを有効にして kernel を再度リンクします。ユーザーがこの種の I/O にメモリを固定するには、aiomemlock(F) ファイルを更新します。このファイルを更新して AIO および固定する最大容量のメモリを使用するユーザー名を含めます。

  4. 多くのアプリケーションは単独のユーザーとして指定できるように setuid バイナリを使用しています。アプリケーションに付属の説明資料を参照して使用するアプリケーションのこのようになっているか確認します。

このプロセスを完了したら、システムをリブートしてこれらの変更を加えた新しい kernel を作成します。

デフォルトでは、/etc/conf/cf.d/mtune へのエントリは以下のように設定されます。

Value           Default         Min             Max
-----           -------         ---             ---
NBUF            0               24              450000
NHBUF           0               32              524288
NMPBUF          0               12              512
MAX_INODE       0               100             64000
MAX_FILE        0               100             64000
CTBUFSIZE       128             0               256
MAX_PROC        0               50              16000
MAX_REGION      0               500             160000
NCLIST          170             120             16640
MAXUP           100             15              16000
NOFILES         110             60              11000
NHINODE         128             64              8192
NAUTOUP         10              0               60
NGROUPS         8               0               128
BDFLUSHR        30              1               300
MAX_FLCKREC     0               50              16000
PUTBUFSZ        8000            2000            20000
MAXSLICE        100             25              100
ULIMIT          4194303         2048            4194303
* Streams Parameters
NSTREAM         64              1               32768
NSTRPUSH        9               9               9
NMUXLINK        192             1               4096
STRMSGSZ        16384           4096            524288
STRCTLSZ        1024            1024            1024
STRMAXBLK       524288          4096            524288
NSTRPAGES       500             0               8000
STRSPLITFRAC    80              50              100
NLOG            3               3               3
NUMSP           64              1               256
NUMTIM          16              1               8192
NUMTRW          16              1               8192
* Semaphore Parameters
SEMMAP          10              10              8192
SEMMNI          10              10              8192
SEMMNS          60              60              8192
SEMMNU          30              10              8192
SEMMSL          25              25              150
SEMOPM          10              10              1024
SEMUME          10              10              25
SEMVMX          32767           32767           32767
SEMAEM          16384           16384           16384
* Shared Memory Parameters
SHMMAX          524288          131072          2147483647
SHMMIN          1               1               1
SHMMNI          100             100             2000
FILE            0               100             64000
NMOUNT          0               4               256
NPROC           0               50              16000
NREGION         0               500             160000

これらの値を以下のように設定するようお勧めします。

  • NOFILES は 4096 あるいは 2048 にします。

  • MAXUP は 2048 にします。

kernel に変更を加えるには idtune name parameter コマンドを使用します。 idtune はお客様に代わって /etc/conf/cf.d/stune ファイルを変更します。例えば、SEMMS200 に変更するには、このコマンドを root として実行します。

# /etc/conf/bin/idtune SEMMNS 200

次に以下のコマンドを発行して kernel を再度ビルドしてリブートします。

# /etc/conf/bin/idbuild -B && init 6

弊社ではシステムのチューニングを推奨していますが、使用する適切なパラメータ値はアプリケーションあるいはデータベースにアクセスするユーザー数およびデータベースのサイズ (つまり、使用済みバッファ プール) に基づきます。以下の kernel パラメータは idtune で設定できます。

  • SHMMAX (推奨設定値:128MB) および SHMSEG (推奨設定値:15). これらのパラメータはユーザーのバッファ プールを作成する MySQL のデータベース エンジンに影響を及ぼします。

  • NOFILES および MAXUP は最低でも 2048 に設定します。

  • MAXPROC は最低でも 3000/4000 (ユーザー数による) あるいはそれ以上に設定します。

  • 弊社ではまた SEMMSLSEMMNS、および SEMMNU の値の計算に以下の式の使用を推奨しています。

    SEMMSL = 13
    

    13 は Progress および MySQL の両方に最適な値であることが分かっています。

    SEMMNS = SEMMSL × number of db servers to be run on the system
    

    SEMMNS を一度にシステムで使用するデータベース サーバの倍数 (最大)の SEMMSL の値に設定します。

    SEMMNU = SEMMNS
    

    SEMMNU の値を設定して SEMMNS の値を同じにします。この値を SEMMNS の 75% に設定できますが、これは控え目な値です。

gcc を使用するには少なくとも SCO OpenServer Linker およびアプリケーション開発ライブラリあるいは OpenServer 開発システムをインストールする必要があります。これらのうちどれかをインストールしなければ GCC Dev システムは使用できません。

FSU Pthreads パッケージを取得して最初にそれをインストールする必要があります。これは http://moss.csc.ncsu.edu/~mueller/ftp/pub/PART/pthreads.tar.gz にあります。コンパイル済みパッケージは ftp://ftp.zenez.com/pub/zenez/prgms/FSU-threads-3.14.tar.gz で取得できます。

FSU Pthreads は SCO Unix 4.2 の tcpip、あるいは SCO 開発システムをインストールし GCC 2.5.x のグッド ポートを使用した OpenServer 3.0 または Open Desktop 3.0 (OS 3.0 ODT 3.0) 使用してコンパイルできます。ODT あるいは OS 3.0 には、GCC 2.5.x のグッド ポートが必要です。グッド ポートがなければ多くの問題が発生します。この製品のポートには SCO Unix 開発システムが必要です。それがなければ、ライブラリおよび必要なリンカがみつかりません。また SCO-3.2v4.2-includes.tar.gz も必要です。このファイルは MySQL のビルドに必要な SCO 開発 include files への変更を含んでいます。既存のシステム include files をこれらの変更ヘッダーファイルで置き換える必要があります。それらは ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz から入手できます。

お客様のシステム上で FSU Pthreads にビルドに必要なことは、GNU make を実行することだけです。FSU-threads-3.14.tar.gz のMakefile を設定して FSU-threads を作成します。

./configurethreads/src ディレクトリで実行して SCO OpenServer オプションを選択できます。このコマンドは Makefile.SCO5Makefile にコピーします。次に make を実行します。

デフォルトの /usr/include ディレクトリにインストールするには、root として、次に cd から thread/src ディレクトリにログインして make install を実行します。

MySQL をビルドするには GNU make を使用することを忘れないでください。

:mysqld_saferoot として実行しなかった場合、デフォルトでプロセスごとに 110 オープン ファイルしか取得できません。mysqld はこのことをログ ファイルに記録します。

SCO 3.2V4.2 には、FSU Pthreads バージョン 3.14 あるいはそれ以降を使用します。以下の configure コマンドが作用します。

CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
    --prefix=/usr/local/mysql \
    --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
    --with-named-curses-libs="-lcurses"

include files の中には問題が発生するものもあります。この場合、新しい SCO 専用の include files を ftp://ftp.zenez.com/pub/zenez/prgms/SCO-3.2v4.2-includes.tar.gz から入手できます。

このファイルを MySQL ソース ツリーの include ディレクトリで解凍します。

SCO の開発ノート:

  • MySQL は自動的に FSU Pthreads を検知して mysqld-lgthreads -lsocket -lgthreads にリンクします。

  • SCO 開発ライブラリは FSU Pthreads に再度追加されたものです。SCO によれば、そのライブラリ関数は新たに追加されたもので、FSU Pthreads に追加する必要があるとのことです。OpenServer の FSU Pthreads は SCO スキーマを使用して再追加のライブラリを作成します。

  • FSU Pthreads (少なくとも ftp://ftp.zenez.com の「バージョン) には GNU malloc が付いています。.メモリの使用で問題がある場合には、gmalloc.olibgthreads.a および libgthreads.so に含まれていることを確認します。

  • FSU Pthreads では、次のシステム コールは pthreads-アウェア (認識) です。read(), write()getmsg()connect()accept(), select()、および wait()

  • CSSA-2001-SCO.35.2 (そのパッチはカスタムで erg711905-dscr_remap セキュリティ パッチ (バージョン 2.0.0 としてリストされています)) は FSU threads を壊して mysqld を不安定にします。mysqld を OpenServer 5.0.6 マシンで動作させる場合にはこれを削除する必要があります。

  • SCO OpenServer 5 を使用する場合、FSU pthreads を CFLAGS-DDRAFT7 で再コンパイルする必要があります。.さもないと、InnoDBmysqld の起動時にハングする場合があります。

  • SCO は OpenServer 5.0.x 用のオペレーティング システムのパッチを ftp://ftp.sco.com/pub/openserver5 で提供しています。

  • SCO は OpenServer 5.0.x 用のセキュリティの修正版および libsocket.so.2ftp://ftp.sco.com/pub/security/OpenServer および ftp://ftp.sco.com/pub/security/sse で提供しています。

  • Pre-OSR506 のセキュリティ修正版また、telnetd の修正版は ftp://stage.caldera.com/pub/security/openserver/ あるいは ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/ その両方 libsocket.so.2 および libresolv.so.1 にはその pre-OSR506 システムのインストールの説明書が付いています。

    MySQL をコンパイル/使用する前にこれらのパッチをインストールするようお勧めします。

Legend/OpenServer 6.0.0 以降には、ネイティブ スレッドがあり、2GB ファイル サイズの制限はありません。

2.13.5.9. SCO OpenServer 6.0.x に関する注釈

OpenServer 6 には以下の主な改善が施されています。

  • 1 TB までの大きなファイル サポート

  • プロセッサのサポートが 4 個から 32 個まで増えたマルチ プロセッサ サポート

  • 64GB まで拡張したメモリ サポート

  • UnixWare のパワーの OpenServer 6 への拡張

  • 大幅なパフォーマンスの改善

OpenServer 6.0.0 のコマンドは以下のような構成になります。

  • /bin は OpenServer 5.0.x とまったく同じ振る舞いをするコマンド用です。

  • /u95/bin は、例えば大きなファイル システム (LFS) サポートなど標準適合に適したコマンド用です。

  • /udk/bin はUnixWare 7.1.4 上と同様に振る舞いをするコマンド用です。デフォルトは LFS サポートです。

以下は PATH を OpenServer 6 上で設定するガイドです。ユーザーが従来の OpenServer 5.0.x を希望する場合には PATH/bin が最初になります。ユーザーが LFS サポートを希望する場合、そのパスは /u95/bin:/bin になります。ユーザーが UnixWare 7 サポートを最初に希望する場合、そのパスは /udk/bin:/u95/bin:/bin: になります。

MySQL の最新の量産リリースの使用をお勧めしています。.旧リリースの MySQL を OpenServer 6.0.x に使用される場合、MySQL のバージョンは少なくとも 3.22.13 に近いものでポータビリティおよび OS の問題に対する修正を含んだものを使用する必要があります。

MySQL ディストリビューション ファイルで以下のフォーム名を持つものはメディア画像の tar アーカイブで SCO OpenServer 上での SCO Software Manager (/etc/custom) との使用に適しています。

mysql-PRODUCT-5.1.15-beta-sco-osr6-i686.VOLS.tar

ディストリビューションで PRODUCTpro-cert のものは商業的にライセンス許諾した MySQL プロ認定サーバです。ディストリビューションで PRODUCTpro-gpl-cert のものは MySQL プロ認定サーバで一般利用許諾書 (GPL) の条件に基づいてライセンスを許諾したものです。

インストールする任意のディストリビューションを選択し、ダウンロードしたら、tar アーカイブを空のディレクトリに取り出します。例えば、

shell> mkdir /tmp/mysql-pro
shell> cd /tmp/mysql-pro
shell> tar xf /tmp/mysql-pro-cert-5.1.15-beta-sco-osr6-i686.VOLS.tar

インストールの前に、項2.11. 「MySQL のアップグレード」 の手順に従ってデータのバックアップを取ります。

以前にインストールした MySQL の pkgadd バージョンを削除します。

shell> pkginfo mysql 2>&1 > /dev/null && pkgrm mysql

SCO Software Manager を使用して MySQL Pro をメディア画像からインストールします。

shell> /etc/custom -p SCO:MySQL -i -z /tmp/mysql-pro

SCO Software Manager のディスクトップの Software Manager アイコンをクリックしてグラフィック表示し、Software -> Install New を選択し、ホストを選択し、Media Images をメディア デバイスに選択し、そして /tmp/mysql-pro をイメージ ディレクトリとして入力します。

インストールしたら、mkdev mysqlroot ユーザーとして起動し新たにインストールした MySQL プロ認定サーバを設定します。

:VOLS パッケージのインストール手順ではパッケージがデフォルトとして使用する mysql のユーザーおよびグループは作成しません。mysql のユーザーおよびグループを作成するか、または mkdev mysql のオプションを使用して別のユーザーまたはグループを選択します。

MySQL Pro server を Apache Web サーバに PHP でインターフェースする設定を行うには、PHP の更新版を SCO の ftp://ftp.sco.com/pub/updates/OpenServer/SCOSA-2006.17/ からダウンロードしてインストールします。

MySQL を以下の configure コマンドで OpenServer 6.0.x 上でコンパイルできます。

CC=cc CFLAGS="-D_FILE_OFFSET_BITS=64 -O3" \
CXX=CC CXXFLAGS="-D_FILE_OFFSET_BITS=64 -O3" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client  \
    --with-extra-charsets=complex \
    --build=i686-unknown-sysv5SCO_SV6.0.0

gcc を使用する場合には、gcc 2.95.3 あるいはそれ以降を使用する必要があります。

CC=gcc CXX=g++ ... ./configure ...

SCO では OpenServer 6 のオペレーティング システムのパッチを ftp://ftp.sco.com/pub/openserver6 で提供しています。

SCO はセキュリティの修正版の情報を ftp://ftp.sco.com/pub/security/OpenServer で提供しています。

デフォルトでは OpenServer 6.0.0 システムの最大ファイル サイズは 1TB です。オペレーティング システムのユーティリティの中には 2GB の制限のものもあります。UnixWare 7 の最大可能ファイル サイズは VXFS あるいは HTFS で 1TB です。

OpenServer 6 はUNIX kernel をチューニングして大きなファイル サポート用に設定できます (2GB 以上のファイル サイズ)。

デフォルトでは、/etc/conf/cf.d/mtune へのエントリは以下のように設定されます。

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF

kernel に変更を加えるには idtune name parameter コマンドを使用します。 idtune はお客様に代わって /etc/conf/cf.d/stune ファイルを変更します。kernel 値の設定は以下のコマンドを root として実行して設定するようお勧めします。

# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SFNOLIM 2048
# /etc/conf/bin/idtune HFNOLIM 2048

次に以下のコマンドを発行して kernel を再度ビルドしてリブートします。

# /etc/conf/bin/idbuild -B && init 6

弊社ではシステムのチューニングを推奨していますが、使用する適切なパラメータ値はアプリケーションあるいはデータベースにアクセスするユーザー数およびデータベースのサイズ (つまり、使用済みバッファ プール) に基づきます。以下の kernel パラメータは idtune で設定できます。

  • SHMMAX (推奨設定値:128MB) および SHMSEG (推奨設定値:15). これらのパラメータはユーザーのバッファ プールを作成する MySQL のデータベース エンジンに影響を及ぼします。

  • SFNOLIM および HFNOLIM は最大で 2048 にします。

  • NPROC は最低でも 3000/4000 (ユーザー数による) に設定します。

  • 弊社ではまた SEMMSLSEMMNS、および SEMMNU の値の計算に以下の式の使用を推奨しています。

    SEMMSL = 13
    

    13 は Progress および MySQL の両方に最適な値であることが分かっています。

    SEMMNS = SEMMSL × number of db servers to be run on the system
    

    SEMMNS を一度にシステムで使用するデータベース サーバの倍数 (最大)の SEMMSL の値に設定します。

    SEMMNU = SEMMNS
    

    SEMMNU の値を設定して SEMMNS の値を同じにします。この値を SEMMNS の 75% に設定できますが、これは控え目な値です。

2.13.5.10. SCO UnixWare 7.1.x および OpenUNIX 8.0.0 に関する注釈

MySQL の最新の量産リリースの使用をお勧めしています。.MySQL の旧リリースを UnixWare 7.1.x に使用する場合、最低でも MySQL の 3.22.13 に近いものを使用するとポータビリティおよび OS の問題の修正版を使用できます。

以下の configure コマンドを使用して UnixWare 7.1.x 上で MySQL をコンパイルできます。

CC="cc" CFLAGS="-I/usr/local/include" \
CXX="CC" CXXFLAGS="-I/usr/local/include" \
./configure --prefix=/usr/local/mysql \
    --enable-thread-safe-client \
    --with-innodb --with-openssl --with-extra-charsets=complex

gcc を使用する場合には、gcc 2.95.3 あるいはそれ以上を使用する必要があります。

CC=gcc CXX=g++ ... ./configure ...

SCO ではオペレーティング システムのパッチを UnixWare 7.1.1 は ftp://ftp.sco.com/pub/unixware7 で、UnixWare 7.1.3 は ftp://ftp.sco.com/pub/unixware7/713/ で、UnixWare 7.1.4 は ftp://ftp.sco.com/pub/unixware7/714/ で、OpenUNIX 8.0.0 は ftp://ftp.sco.com/pub/openunix8 で提供しています。

SCO ではセキュリティの修正版を OpenUNIX は ftp://ftp.sco.com/pub/security/OpenUNIX で、UnixWare は ftp://ftp.sco.com/pub/security/UnixWare で提供しています。

UnixWare 7 のファイル サイズは VXFS で最大 1 TB です。オペレーティング システム ユーティリティの中には 2GB 制限にものもあります。

UnixWare 7.1.4 では大きなファイル サイズのサポートを取得するのに何もすることはありませんが、UnixWare 7.1.x 以前のバージョンで大きなファイルをサポートするにはfsadm を実行する必要があります。.

# fsadm -Fvxfs -o largefiles /
# fsadm /         * Note
# ulimit unlimited
# /etc/conf/bin/idtune SFSZLIM 0x7FFFFFFF     ** Note
# /etc/conf/bin/idtune HFSZLIM 0x7FFFFFFF     ** Note
# /etc/conf/bin/idbuild -B

* This should report "largefiles".
** 0x7FFFFFFF represents infinity for these values.

shutdown を使用してシステムをリブートします。

デフォルトでは、/etc/conf/cf.d/mtune へのエントリは以下のように設定されます。

Value           Default         Min             Max
-----           -------         ---             ---
SVMMLIM         0x9000000       0x1000000       0x7FFFFFFF
HVMMLIM         0x9000000       0x1000000       0x7FFFFFFF

kernel に変更を加えるには idtune name parameter コマンドを使用します。 idtune はお客様に代わって /etc/conf/cf.d/stune ファイルを変更します。kernel 値の設定は以下のコマンドを root として実行して設定するようお勧めします。

# /etc/conf/bin/idtune SDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HDATLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune HVMMLIM 0x7FFFFFFF
# /etc/conf/bin/idtune SFNOLIM 2048
# /etc/conf/bin/idtune HFNOLIM 2048

次に以下のコマンドを発行して kernel を再度ビルドしてリブートします。

# /etc/conf/bin/idbuild -B && init 6

弊社ではシステムのチューニングを推奨していますが、使用する適切なパラメータ値はアプリケーションあるいはデータベースにアクセスするユーザー数およびデータベースのサイズ (つまり、使用済みバッファ プール) に基づきます。以下の kernel パラメータは idtune で設定できます。

  • SHMMAX (推奨設定値:128MB) および SHMSEG (推奨設定値:15). これらのパラメータはユーザーのバッファ プールを作成する MySQL のデータベース エンジンに影響を及ぼします。

  • SFNOLIM および HFNOLIM は最大で 2048 にします。

  • NPROC は最低でも 3000/4000 (ユーザー数による) に設定します。

  • 弊社ではまた SEMMSLSEMMNS、および SEMMNU の値の計算に以下の式の使用を推奨しています。

    SEMMSL = 13
    

    13 は Progress および MySQL の両方に最適な値であることが分かっています。

    SEMMNS = SEMMSL × number of db servers to be run on the system
    

    SEMMNS を一度にシステムで使用するデータベース サーバの倍数 (最大)の SEMMSL の値に設定します。

    SEMMNU = SEMMNS
    

    SEMMNU の値を設定して SEMMNS の値を同じにします。この値を SEMMNS の 75% に設定できますが、これは控え目な値です。

2.13.6. OS/2 に関する注釈

MySQL は極少数のオープン ファイルを使用しています。このため、以下のようなものを CONFIG.SYS ファイルに追加する必要があります。

SET EMXOPT=-c -n -h1024

これを追加しなかった場合、以下の問題が発生する場合があります。

File 'xxxx' not found (Errcode: 24)

MySQL を OS/2 Warp 3 で使用するには、FixPack 29 あるいはそれ以降が必要です。OS/2 Warp 4 では、FixPack 4 あるいはそれ以降が必要です。これは Pthreads ライブラリに必要です。MySQL は HPFS、FAT32 などの長いファイル名をサポートしたパーテッションにインストールする必要があります。

INSTALL.CMD スクリプトは OS/2 の CMD.EXE で実行する必要があり、4OS2.EXE などの代わりのシェルでは動作しません。

scripts/mysql-install-db スクリプトの名前が変わっています。それは install.cmd と呼ばれ REXX スクリプトで、デフォルトの MySQL のセキュリティを設定し、WorkPlace Shell のアイコンを MySQL に作成します。

動的モジュールのサポートはコンパイルしましたがまだ完全にテストしていません。動的モジュールは Pthreads のランタイム ライブラリを使用してコンパイルする必要があります。

gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
    -o example udf_example.c -L../lib -lmysqlclient udf_example.def
mv example.dll example.udf

:OS/2 の制限により、 UDF のモジュール名は 8 文字を超えることはできません。モジュールは /mysql2/udf ディレクトリに保持され、safe-mysqld.cmd スクリプトがこのディレクトリを BEGINLIBPATH 環境変数に加えます。UDF モジュールを使用する場合、指定された拡張は無視されます--.udf と想定されます。例えば、Unix では、共有モジュールは example.so と命名され、関数をそれから以下の様にロードします。

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example.so';

OS/2 では、モジュールは example.udf と命名できますが、モジュール拡張は指定できません。

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'example';

2.14. 環境変数

この項では直接的あるいは間接的に MySQL で使用されるすべての環境変数について説明します。これらの多くは本マニュアルの別の場所にもあります。

コマンドラインのいかなるオプションもオプション ファイルまたは環境変数で指定された値に優先し、オプション ファイルの値は環境変数の値に優先することにご留意ください。

多くの場合、オプション ファイルを環境変数の代わりに使用して MuSQL の振る舞いを変更するほうが好ましいといえます。項3.3.2. 「オプションファイルの使用」 参照。

変数説明
CXXC++ コンパイラ名 (configure 実行用)。
CCC コンパイラ名 (configure 実行用)。
CFLAGSC コンパイラ用フラグ (configure 実行用)。
CXXFLAGSC コンパイラ用フラグ (configure 実行用)。
DBI_USERPerl DBI のデフォルトユーザー名.
DBI_TRACEPerl DBI のトレース オプション
HOMEmysql 履歴ファイルのデフォルトのパスは $HOME/.mysql_history.
LD_RUN_PATHlibmysqlclient.so のロケーション指定に使用。
MYSQL_DEBUGデバッグ中のデバッグ トレース オプション。
MYSQL_GROUP_SUFFIXオプション グループの接尾辞の値 (--defaults-group-suffix などの指定)。
MYSQL_HISTFILEmysql 履歴ファイルへのパス。この変数を設定すると、その値は $HOME/.mysql_history のデフォルトをオーバーライドします。
MYSQL_HOMEサーバ特定の my.cnf ファイルが常駐するディレクトリへのパス (MySQL 5.0.3 として)。
MYSQL_HOSTmysql のコマンドライン クライアントが使用するデフォルトのホスト名
MYSQL_PS1mysql コマンドライン クライアントで使用するコマンド プロンプト
MYSQL_PWDmysqld に接続する際のデフォルトのパスワード。これを使用することはセキュアされていません。.項4.8.6. 「パスワードのセキュリティ」 参照。
MYSQL_TCP_PORTデフォルトの TCP/IP ポート番号。
MYSQL_UNIX_PORTデフォルトの Unix ソケット ファイル名。localhostへの接続に使用。
PATHシェルが MySQL プログラムの検索に使用する。
TMPDIR一時ファイルが作成されるディレクトリ。
TZローカル タイム ゾーンに設定する必要があります。項B.1.4.6. 「Time Zone Problems」 参照。
UMASK_DIRディレクトリを作成する際のユーザーディレクトリ作成マスク。これは UMASKANDed されます。
UMASKファイルを作成する際のユーザーファイル作成マスク。
USERmysqld に接続する際に使用される Windows および NetWare 上のデフォルトのユーザー名

2.15. Perl のインストールに関する注釈

MySQL の Perl のサポートは DBI/DBD クライアント インターフェースによって提供されます。そのインターフェースには Perl 5.6.1 あるいはそれ以降が必要です。旧バージョンの Perl の場合にはそれは機能しません

トランザクションを Perl DBI で使用する場合、DBD::mysql バージョン 1.2216 あるいはそれ以降が必要です。DBD::mysql 2.9003 あるいはそれ以降をお勧めします。

MySQL 4.1 あるいはそれ以降の新しいクライアント ライブラリを使用している場合、DBD::mysql 2.9003 あるいはそれ以降を使用する必要があります。

MySQL のディストリビューションには Perl のサポートは含まれていません。http://search.cpan.org 、あるいは Windows の ActiveState ppm プログラムを使用して Unix に必要なモジュールを取得できます。以下の項でその取得の仕方について説明します。

MySQL のベンチマーク スクリプトを実行するには MySQL に Perl サポートをインストールする必要があります。項6.1.4. 「MySQL ベンチマークスィート」 参照。

2.15.1. Unix に Perl をインストールする

MySQL のPerl のサポートには MySQL のクライアント プログラム サポート (ライブラリおよびヘッダーファイル) をインストールする必要があります。ほとんどのインストール メソッドで必要なファイルをインストールできます。しかし、Linux 上で MySQL を RPM ファイルからインストールした場合、開発者 RPM をインストールしたことを確認する必要があります。クライアント プログラムはクライアント RPM にありますが、クライアント プログラム サポートは開発者 RPM にあります。

Perl サポートをインストールする場合、必要なファイルは CPAN (包括的な Perl アーカイブ ネットワーク) から http://search.cpan.org で入手できます。

Unix に Perl モジュールをインストールするには CPAN モジュールを使用するのが一番簡単です。例えば、

shell> perl -MCPAN -e shell
cpan> install DBI
cpan> install DBD::mysql

DBD::mysql インストールには多くのテストを実行します。これらのテストはデフォルトのユーザー名およびパスワードを使用して ローカルの MySQL サーバに接続を試みます。(Unix 上のデフォルトのユーザー名はお客様のログイン名で、Windows 上では ODBC になります。デフォルトのパスワードは 「パスワードではありません。」) サーバにそれらの値 (例えば、アカウントにパスワードを設定している場合)、テストは失敗します。force install DBD::mysql を使用して失敗したテストを無視します。

DBI には Data::Dumper モジュールが必要です。それはインストールできますが、もしできなかった場合、DBI をインストールする前にそれをインストールします。

モジュールのディストリビューションを圧縮 tar アーカイブでダウンロードしてモジュールを手動で作成することもできます。例えば、DBI ディストリビューションを解凍してビルドするには、以下のような手順に従います。

  1. ディストリビューションを現在のディレクトリに解凍します。

    shell> gunzip < DBI-VERSION.tar.gz | tar xvf -
    

    このコマンドが DBI-VERSION 名のディレクトリを作成します。

  2. ロケーションを解凍したディストリビューションの上段のディレクトリに変更します。

    shell> cd DBI-VERSION
    
  3. ディストリビューションをビルドしてすべてをコンパイルします。

    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

make test コマンドはモジュールが動作していることを確認するために重要です。DBD::mysql のインストール中にそのコマンドを実行してインターフェースのコードを実行するには、MySQL サーバが動作していなければなりません。さもなければそのテストは失敗します。

MySQL の新しいリリースをインストールする時はいつでも DBD::mysql ディストリビューションを再ビルドして再インストールするのがいいでしょう。特にすべての DBI スクリプトが MySQL をアップグレードした後に失敗するような場合にはそれはいい考えです。

システムのディレクトリに Perl モジュールをインストールするためのアクセス権限がない場合、あるいはローカルの Perl モジュールをインストールする場合、以下の引用が役に立ちます。 http://servers.digitaldaze.com/extensions/perl/modules.html#modules

ヘッディング 「ローカルでインストールしたモジュールが必要な新しいモジュールのインストール」の下を見ます。

2.15.2. Windows に ActiveState Perl をインストールする

Windows 上で、MySQL の DBD モジュールを ActiveState Perl でインストールするには以下の手順に従います。

  1. http://www.activestate.com/Products/ActivePerl/ から ActiveState Perl を入手してインストールします。

  2. コンソール ウインドウ (「DOS window」) を開きます。

  3. 必要に応じて HTTP_proxy 変数を設定します。例えば、以下のような設定を試してみます。

    set HTTP_proxy=my.proxy.com:3128
    
  4. PPM プログラムの実行:

    C:\> C:\perl\bin\ppm.pl
    
  5. これまでインストールしたことがない場合、DBI をインストールします。

    ppm> install DBI
    
  6. これが完了したら、以下のコマンドを実行します。

    install \
    ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
    

このプロシージャは ActiveState Perl 5.6 あるいはそれ以降で機能します。

使用するプロシージャを取得できない場合には、MyODBC ドライバを代わりにインストールし、ODBC で MySQL サーバに接続します。

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

2.15.3. Perl DBI/DBD インターフェースを使用した際の問題

Perl が ../mysql/mysql.so モジュールを見つけることができない場合、その問題は多分 Perl が libmysqlclient.so 共有ライブラリの場所が分からないためです。この問題は以下のメソッドの一つで解決できるはずです。

  • DBD::mysql ディストリビューションをperl Makefile.PL の代わりに perl Makefile.PL -static -config でコンパイルします。

  • libmysqlclient.so を他の共有ライブラリがある (多分 /usr/lib あるいは /lib) ディレクトリにコピーします。

  • DBD::mysql のコンパイルに使用される -L オプションを変更して libmysqlclient.so の実際のロケーションに入れます。

  • Linux 上で、libmysqlclient.so があるディレクトリのパス名を /etc/ld.so.conf ファイルに追加します。

  • libmysqlclient.so があるディレクトリのパス名を LD_RUN_PATH 環境変数に追加します。システムの中には LD_LIBRARY_PATH を使用しているものもあります。

リンカが見つけられない他のライブラリがある場合 -L オプションを変更する必要がある場合があります。例えば、リンカが libc/lib にあるため見つけられない場合でリンクのコマンドが -L/usr/lib を指定している場合、-L オプションを -L/lib に変更するかあるいは -L/lib を既存のリンクコマンドに追加します。

DBD::mysql から以下のエラーが表示された場合、多分 gcc (あるいは gcc でコンパイルされた旧バイナリを使用している) を使用していることになります。

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

-L/usr/lib/gcc-lib/...-lgcc をリンク コマンドに mysql.so ライブラリがビルドされた時に追加します (make の出力を mysql.so に対し Perl のクライアントをコンパイルした時にチェックします)。-L オプションはシステム上の libgcc.a があるディレクトリのパス名を指定します。

この問題の別の原因は Perl および MySQL が両方とも gcc でコンパイルされていない場合です。.この場合、このミスマッチをその両方とも gcc でコンパイルすることで解決できます。

テストを実施した時に以下の DBD::mysql のエラーが表示される場合があります。

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

このことは -lz 圧縮ライブラリをリンク行に含める必要があることを意味しています。それは lib/DBD/mysql/Install.pm のファイルに以下の行を変更することでできます。

$sysliblist .= " -lm";

行を以下に変更します。

$sysliblist .= " -lm -lz";

変更した後に、make realclean必ず実行して次にインストールはじめから実施します。

SCO に DBI をインストールするには DBI-xxxMakefile および各サブディレクトリを編集する必要があります。以下は gcc 2.95.2 あるいはそれ以降を想定したものです。

OLD:                                  NEW:
CC = cc                               CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =

LD = ld                               LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib

LD = ld                               LD = gcc -G -fpic
OPTIMISE = -Od                        OPTIMISE = -O1

OLD:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

NEW:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

これらの変更は Perl dynaloader が DBI モジュールをそれらが icc あるいは cc でコンパイルされた場合はロードしないために必要です。

動的リンク (SCO など) をサポートしていないシステムで Perl のモジュールを使用する場合、DBI および DBD::mysql を含む Perl の静的バージョンを生成できます。これを可能にするには Perl のバージョンをリンクした DBI コードで生成しそれを現在の Perl の先頭にインストールします。次にそれを使用して新たにリンクされた DBD コードを持つ Perl のバージョンをビルドし、それをインストールします。

SCO では、以下の環境変数が設定されている必要があります。

LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib

または

LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
    /usr/progressive/lib:/usr/skunk/lib
MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
    /usr/skunk/man:

最初に、DBI ディストリビューションがあるディレクトリのこれらのコマンド実行して静的にリンクした DBI モジュールを含む Perl を作成します。

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

次に新しい Perl をインストールします。make perl の出力がインストールの実施に必要な正確な make コマンドです。SCO では、これは make -f Makefile.aperl inst_perl MAP_TARGET=perl です。

次に、上記で作成した Perl を使用して DBD::mysql ディストリビューションがあるディレクトリのこれらのコマンド使用して同様に静的にリンクした DBD::mysql を含む別の Perl を作成します。

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

最後に、この新しい Perl をインストールします。make perl の出力は上記同様使用するコマンドを表しています。


powered by SEO.CUG.NET