目次
この章では MySQL の取得とインストールについて説明します。最初の手順の概要を、後半の項で詳細を説明します。MySQL を最初にインストールするのではなく、現行の MySQL を新しいベージョンにアップグレードするには、項2.11. 「MySQL のアップグレード」 を参照してください。アップグレード前に考慮すべき問題点およびアップグレードの手順に関する情報を網羅しています。
MySQL を別のデータベース システムから移行する場合には 項A.9. 「MySQL 5.1 FAQ ? Migration」 を参照してください。この資料に中にはい移行の問題に関する質問に対する解答が含まれています。
MySQL の実行と現在使用中のプラットフォームのサポート。 MySQL はどのプラットフォームでも同様に動作する訳ではなく、また MySQL が動作するといわれているプラットフォームのすべてを MySQL AB がサポートしている訳でありません。
MySQL Enterprise Server を公式にサポートしているプラットフォームの一覧は http://www.mysql.com/support/supportedplatforms.html にあります。
MySQL Community Server は 項2.1.1. 「MySQL Community Server がサポートしているオペレーティング システム」 の一覧にあるプラットフォームで動作します。
どの配布版をインストールするか選択します。 MySQL にはいくつかのバージョンがあり、その殆どがいくつかのプラットフォームで動作します。バイナリ (コンパイル済み) プログラムあるいはソースコードを含むパッケージを選択できます。疑問がある場合にはバイナリの配布版が無難です。弊社ではまた弊社の最新の開発に興味があり、新しいコードのテストにご協力頂ける方にソースを公開しています。どのバージョンのどの配布版を選択したらよいかは 項2.1.2. 「インストールする MySQL 配布版の選択」 をご覧ください。
インストールする配布版をダウンロードします。
インストールの説明は、項2.1.3. 「MySQL の取得方法」
をご覧ください。配布版の品質を確認するには、項2.1.4. 「MD5 チェックサムあるいは
GnuPG
を用いたパッケージの品質の検証」
の説明を参照してください。
配布版をインストールします。 MySQL をバイナリでインストールするには、項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 の説明書を参照してください。MySQL をソースの配布版からインストールする、あるいは現在の開発版からインストールするかは、項2.9. 「ソースのディストリビューションを使用した MySQL のインストール」 を参照してください。
インストールで問題がありましたら、項2.13. 「オペレーティング システムに特化した注釈」 をご覧ください。特定のプラットフォームに関する問題の解決法を載せてあります。
インストール後の必要な設定を実行kします。 MySQL をインストールしたら、項2.10. 「インストール後の設定とテスト」 をお読みください。この項では MySQL の動作検証に関する重要な情報を提供します。また最初の MySQL ユーザーアカウントの設定方法、特にパスラードを割り当てられるまでのパスワードが無い場合 の設定についても説明します。この項はバイナリおよびソース配布双方の MySQL のインストールを網羅しています。
MySQL のベンチマーク スクリプトの実行を希望される場合、Perl の MySQL サポートが必要になります。項2.15. 「Perl のインストールに関する注釈」 参照。
MySQL のインストール手順は MySQL Enterprise Server あるいは MySQL Community Server によって異なります。.使用できるプラットフォームはどの配布版をインストールするかによって異なります。
MySQL Enterprise Server を公式にサポートしているプラットフォームの一覧は http://www.mysql.com/support/supportedplatforms.html にあります。
MySQL Community Server は 項2.1.1. 「MySQL Community Server がサポートしているオペレーティング システム」 の一覧にあるプラットフォームで動作します。
MySQL Enterprise Server の場合、Enterprise のインストーラを使用してメインの配布版および必要なサービスパックあるいはホットフィックスをインストールします。Enterprise インストーラをまだ用意していないプラットフォームの場合、Community Server の説明書を使用します。
MySQL Community Server には、メインの配布版とホットフィックスとその更新をインストールします。
バイナリのリリースあるいはソースのリリースをダウンロードしてソースコードで MySQL を構築します。
MySQL を BitKeeper ツリーから取り出してソースから構築します。BitKeeper ツリーには最新の開発コードが含まれています。
次の数項で配布版の選択、ダウンロード、および検証に必要な情報を掲げています。本章の次項以降で選択された配布版のインストールについて説明します。バイナリの配布版についは、項2.2. 「バイナリの配布を使用した標準 MySQL のインストール」 の説明書を参照してください。MySQL をソースから構築するには、項2.9. 「ソースのディストリビューションを使用した MySQL のインストール」 の説明書を使用します。
この項では MySQL Community Server が動作するオペレーティング システムを採り上げます。
重要MySQL ABではこの項で採り上げるすべてのオペテーティング システムに公式のサポートは提供していません。MySQL AB が公式にサポートしているプラットフォームは MySQL のウェブサイトにある MySQL Server Supported Platforms を参照してください。
弊社では GNU Autoconf を使用していますので、C++ のコンパイラを実装した最新のシステムに MySQL をポートして POSIX スレッドを実装できます。(スレッドのサポートがサーバに必要です。クライアントコードのみをコンパイル摩る場合には、C++ コンパイラーのみが必要です。)弊社では主に Linux (SuSE および Red Hat)、FreeBSD、および Sun の Solaris (バージョン 8 と 9) を使用して自社でソフトウェアの開発を行っています。
MySQL は以下のオペレーティング システムとスレッド パッケージの組み合わせでのコンパイルでよい結果が出ています。多くのオペレーティング システムでは、ネイティブのスレッドのサポートは最新バージョンのみで動作します。
AIX 4.x, 5.x (ネイティブ スレッド)。項2.13.5.3. 「IBM-AIX に関する注釈」 参照。
Amiga。
BSDI 2.x (MIT-pthreads パッケージ)。項2.13.4.4. 「BSD/OS Version 2.x に関する注釈」 参照。
BSDI 3.0、3.1 および 4.x (ネイティブ スレッド)。項2.13.4.4. 「BSD/OS Version 2.x に関する注釈」 参照。
Digital Unix 4.x (ネイティブ スレッド)。項2.13.5.5. 「Alpha-DEC-UNIX に関する注釈 (Tru64)」 参照。
FreeBSD 2.x (MIT-pthreads パッケージ)。項2.13.4.1. 「FreeBSD に関する注釈」 参照。
FreeBSD 3.x and 4.x (ネイティブ スレッド)。項2.13.4.1. 「FreeBSD に関する注釈」 参照。
FreeBSD 4.x (ネイティブ スレッド)。項2.13.4.1. 「FreeBSD に関する注釈」 参照。
HP-UX 10.20 (DCE スレッドあるいは MIT-pthreads パッケージ)。項2.13.5.1. 「HP-UX バージョン 10.20 に関する注釈」 参照。
HP-UX 11.x (ネイティブ スレッド)。項2.13.5.2. 「HP-UX バージョン 11.x に関する注釈」 参照。
Linux 2.0+ LinuxThreads 0.7.1+ あるいは
glibc
2.0.7+ (いくつかの CPU
アーキテクチャ用)。項2.13.1. 「Linux の注釈」
参照。
Mac OS X. 項2.13.2. 「Mac OS X に関する注釈」 参照。
NetBSD 1.3/1.4 Intel および NetBSD 1.3 Alpha (GNU 仕様)。項2.13.4.2. 「NetBSD に関する注釈」 参照。
Novell NetWare 6.0 および 6.5。項2.7. 「MySQL を NetWare にインストールする」 参照。
OpenBSD 2.5 およびネイティブ スレッド付き。OpenBSD 2.5 以前(MIT-pthreads パッケージ)項2.13.4.3. 「OpenBSD 2.5 に関する注釈」 参照。
OS/2 Warp 3、FixPack 29 および OS/2 Warp 4、FixPack 4。項2.13.6. 「OS/2 に関する注釈」 参照。
SCO OpenServer 5.0.X の最新 FSU Pthreads パッケージ サポート版項2.13.5.8. 「SCO UNIX および OpenServer 5.0.x に関する注釈」 参照。
SCO Openserver 6.0.x。項2.13.5.9. 「SCO OpenServer 6.0.x に関する注釈」 参照。
SCO UnixWare 7.1.x。項2.13.5.10. 「SCO UnixWare 7.1.x および OpenUNIX 8.0.0 に関する注釈」 参照。
SGI Irix 6.x (ネイティブ スレッド)。項2.13.5.7. 「SGI Irix に関する注釈」 参照。
Solaris 2.5 およびそれ以降で SPARC および x86 のネイティブ スレッド付き。項2.13.3. 「Solaris に関する注釈」 参照。
SunOS 4.x (MIT-pthreads パッケージ)項2.13.3. 「Solaris に関する注釈」 参照。
Tru64 Unix。項2.13.5.5. 「Alpha-DEC-UNIX に関する注釈 (Tru64)」 参照。
Windows 9x、Me、NT、2000、XP、および Windows Server 2003。項2.3. 「Windows に 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 の動作に一番適しているかの検討を始めました。
MySQL をインストールする際に、どのバージョンをインストールするか決める必要があります。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 以上のデータで検証しています。
インストールする 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++ コードを読む (修正し) ことができます。これを行うには、ソースの配布を取得する必要があります。ソースコードは常に最適なマニュアルです。
ソースの配布にはバイナリの配布より多くのテスト項目および例があります。
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 のレポジトリのソースから即座に入手できるようになっており、そのバグの修正は次回のリリースに更新されます。
リリースでセキュリティの脆弱性および深刻なバグが見つかった場合には、弊社の方針に則ってそれを新しいしリースで早急に対応します。(弊社では他の会社もこのように早急な対策するよう希望しています!)
弊社ではバグのないリリースを目指してかなりの時間と労力を費やしています。弊社の方針で 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
ライブラリにあったために、バグの追跡に長い時間がかかりました。
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
MySQL の現在のバージョン情報およびダウンロードの説明書に関してはダウンロード ページ http://dev.mysql.com/downloads/ を参照してください。MySQL のダウンロードのミラーサイトの最新の完全な更新リストは、http://dev.mysql.com/downloads/mirrors.html を参照してください。そこにはまた MySQL ミラーサイトのなり方および不良ミラーおよび旧式ミラーのレポート方法に関する情報が載せてあります。
弊社の主要なミラーは http://mirrors.sunsite.dk/mysql/ にあります。
お客様の仕様に適した MySQL のパッケージをダウンロードしそれをインストールする前に、そのパッケージが元のままで改ざんされていないか確認する必要があります。MySQL AB では品質の確認に 3 つの方法を提供しています。
MD5 チェックサム
GnuPG
、GNU Privacy Guard
を使用した暗号署名
RPM パッケージの場合、内蔵 RPM 品質検証メカニズム
以下の項ではこれらのメソッドの使用方法について説明します。
MD5 チェックサムおよび GPG
署名が一致しない場合には、別のミラーサイトからそれぞれのパッケージを再度ダウンロードします。何回繰返してもパッケージの完全性を確認できない場合には、その状況と完全なパッケージ名および使用したダウンロード
サイトを明記の上、<webmaster@mysql.com>
あるいは <build@mysql.com>
までご連絡ください。バグのレポート
システムではダウンロードの問題をレポートしないでください。
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
にあります。
パッケージの完全性およびその典拠を確認する別のメソッドとして暗号署名を使用します。このメソッドは 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 の資料を参照してください。
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
を使用した署名確認」
を参照してください。
この項では MySQL AB が供給したバイナリあるいはソースの配布のインストールにより作成されたディレクトリのデフォルトのレイアウトについて説明します。他のベンダーから供給された配布は以下に示すレイアウトと異なるレイアウトを使用する場合があります。
Windows 5.1 で動作している MySQL
のデフォルトのインストール ディレクトリは
C:\Program Files\MySQL\MySQL Server
5.1
になります。(Windows
のユーザーの中には公式にデフォルトとして使用されていた
C:\mysql
にインストールを希望される場合があります。しかし、サブディレクトリのレイアウトはそのまま変わりません。)インストール
ディレクトリには以下のサブディレクトリがあります。
ディレクトリ | ディレクトリの中身 |
bin | クライアント プログラムと mysqld サーバ |
data | ログ ファイル、データベース |
Docs | CHM フォーマットのマニュアル |
examples | プログラムおよびスクリプト例 |
include | (ヘッダー) ファイルを含む |
lib | ライブラリ |
scripts | ユーティリティ スクリプト |
share | エラーメッセージ ファイル |
MySQL AB の Linux RPM 配布で作成されたインストールは以下のシステム ディレクトリのファイルに格納されます。
ディレクトリ | ディレクトリの中身 |
/usr/bin | クライアント プログラムおよびスクリプト |
/usr/sbin | mysqld サーバ |
/var/lib/mysql | ログ ファイル、データベース |
/usr/share/info | 情報フォーマットのマニュアル |
/usr/share/man | Unix マニュアル ページ |
/usr/include/mysql | (ヘッダー) ファイルを含む |
/usr/lib/mysql | ライブラリ |
/usr/share/mysql | エラー メッセージと文字列セット ファイル |
/usr/share/sql-bench | ベンチマーク |
Unix では、tar
ファイルのバイナリ配布が選択したインストールのロケーション
(一般的には /usr/local/mysql
)
で解凍するとインストールされそのロケーションで以下のディレクトリが作成されます。
ディレクトリ | ディレクトリの中身 |
bin | クライアント プログラムおよび mysqld サーバ |
data | ログ ファイル、データベース |
docs | 情報フォーマットのマニュアル |
man | Unix マニュアル ページ |
include | (ヘッダー) ファイルを含む |
lib | ライブラリ |
scripts | mysql_install_db |
share/mysql | エラーメッセージ ファイル |
sql-bench | ベンチマーク |
ソースの配布がそれを設定してコンパイルした後にインストールされます。デフォルトでは、インストール手順によってファイルを
/usr/local
の以下のサブディレクトリにインストールします。
ディレクトリ | ディレクトリの中身 |
bin | クライアントプログラムおよびスクリプト |
include/mysql | (ヘッダー) ファイルを含む |
Docs | Info のマニュアル、CHM フォーマット |
man | Unix マニュアル ページ |
lib/mysql | ライブラリ |
libexec | mysqld サーバ |
share/mysql | エラーメッセージ ファイル |
sql-bench | ベンチマークおよびcrash-me テスト |
var | データベースおよびログ ファイル |
インストールしたディレクトリの中では、ソースのインストールのレイアウトが以下の点でバイナリのインストールと異なります。
mysqld サーバは
bin
ディレクトリではなく
libexec
ディレクトリにインストールされます。
データ ディレクトリは data
ではなく var
です。
mysql_install_db は
scripts
ディレクトリではなく
bin
ディレクトリにインストールされます。
ヘッダーファイルとライブラリのディレクトリは
includel
および
lib
ではなく
include/mysql
および
lib/mysql
.
ソース配布の一番上の ディレクトリにある
scripts/make_binary_distribution
スクリプトを実行してコンパイルされたソースの配布でお客様ご自身のバイナリのインストールを作成できます。
次の数項ではそれぞれのプラットフォームのネイティブなパッケージ オーマットを使用したパッケージで提供しているプラットフォーム上の MySQL のインストールについて説明します。(これはまた 「binary install.」 の実行として知られています。) しかし、MySQL のバイナリの配布はその他多くのプラットフォームでも利用できます。すべてのプラットフォームに適用できるこれらのパッケージの包括的なインストールの説明は 項2.8. 「他の Unix 系システムへの MySQL のインストール」 を参照してください。
利用できるその他のバイナリの配布およびその取得方法に関する詳細は 項2.1. 「一般的なインストールの問題」 を参照してください。
バージョン 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 の取得方法」 参照。
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 アーカイブからのインストール」 を参照します。
初めて MySQL を使用するユーザーは MySQL インスとレーション ウイザードと MySQL 設定ウイザードを使用して MySQL を Windows にインストールします。これらは MySQL を初めて使用するユーザーが MySQL を使用して直ぐ起動できるように MySQL をインストールして設定できるようになっています。
MySQL インストール ウイザード および MySQL 設定ウイザードは基本および完全インストール パッケージで利用できます。それらを最も標準的な MySQL のインストールにお勧めしています。その例外としては、複数の MySQL インスタンスを 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. 「質問またはバグの報告」 の説明に従ってそれを弊社のバグ データベースまでご連絡お願いします。
MySQL のインストール パッケージは http://dev.mysql.com/downloads/ からダウンロードできます。ダウンロードするパッケージが Zip のアーカイブにある場合には、最初にアーカイブを取り出す必要があります。
ウイザードと起動するプロセスはダウンロードしたインストール
パッケージの中身に因ります。setup.exe
ファイルがある場合、それをダブル
クリックしてインストール
プロセスを開始します。.msi
ファイルがある場合、それをダブル
クリックしてインストール
プロセスを開始します。
インストールの方法は 3 種類あります。標準、完全、、およびカスタム の 3 種類です。
標準 のインストールでは MySQL サーバ、mysql コマンドライン クライアント、およびコマンドライン ユーティリティをインストールします。コマンドライン クライアントおよびユーティリティには mysqldump、myisamchk、および MySQL サーバを管理するいくつかのツールが含まれています。
完全 なインストールはインストール パッケージに含まれるすべてのコンポーネントをインストールします。完全なインストールパッケージには埋め込みサーバ ライブラリ、ベンチマーク スイート、サポート スクリプト、および説明書が含まれています。
カスタム のインストールではインスロールするパッケージおよび使用するインストール パスなどを選択できます。詳細およびカスタムのインストールを実施するには、項2.3.3.4. 「カスタムのインストール ダイアログ」 を参照してください。
標準および完全のインストールを選択して ボタンをクリックすると、選択の確認画面が表示されインストールを開始します。カスタムのインストールを選択して ボタンをクリックすると、項2.3.3.4. 「カスタムのインストール ダイアログ」 で説明したカスタムのインストール ダイアログが表示されます。
MySQL インストール ウイザードに含まれるインストールのパスあるいは特定のコンポーネントを変更する場合には、カスタムインストールを選択します。
カスタム インストール ダイアログの左側のツリー表示に利用できるすべてのコンポーネントが表示されます。インストールしなかったコンポーネントには赤の X アイコン、インストールしたコンポーネントには灰色のアイコンが付きます。インストールするコンポーネントを変更するには、そのコンポーネントのアイコンをクリックし、表示されているドロップダウンリストからインストールするアイコンを選択します。
デフォルトのインストール パスを
ボタンをクリックして希望するインストールするパスに変更します。インストールするコンポーネントとインストール パスを選択したら、
ボタンをクリックすると選択の確認のダイアログが表示されます。インストールの種類とオプションのコンポーネントを選択すると、選択確認のダイアログが表示されます。選択を確認するための選択したインストールの種類とインストールのパスがダイアログに表示されます。
選択した設定に間違いない場合、
ボタンをクリックすると MySQL のインストールが開始されます。設定を変更するには、 ボタンをクリックします。MySQL をインストールしないで MySQL インストール ウイザードを終了するには、 ボタンをクリックします。インストールが完了すると、MySQL のウェブサイトに登録するかどうか問われます。登録することによって forums.mysql.com の MySQL フォーラムに投稿したり、バグを bugs.mysql.com にレポートしたり、ニュースレターを購読できます。インストーラの最後の画面ではインストールの概要を表示し、MySQL 設定ウイザードの起動オプションを提供します。そこで設定ファイルを作成し、 MySQL のサービスをインストールし、セキュリティを設定します。
ボタンをクリックすると、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 コマンドライン
クライアントへのショウトカットで
root
ユーザーとして接続が設定されます。このショートカットは接続すると
root
ユーザーパスワード聞いてきます。
:これは 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
\MySQLProgram 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 アプリケーションの特定にシステムでの管理と維持が用意になります。
MySQL インストール ウイザードは MSI の機能を使用してサーバのアップグレードを自動的に行います。これにより以前のバージョンを手動でアンインストールすることなく新しいリリースをインストールできます。インストーラーは新しいバージョンをインストールする前に自動的にシャットダウンして以前のバージョンを削除します。
自動アップグレードは同じ大きな枝番と小さな枝番を持つバージョン番号でのインストールの際にのみ利用できます。例えば、MySQL 4.1.5 から MySQL 4.1.6 に自動的にアップグレードできますが、MySQL 5.0 から MySQL 5.1 へのアップグレードはできません。
MySQL 設定ウイザードは Windows
環境でサーバの設定プロセスを自動化します。MySQL
設定ウイザード一連の質問をお客様に問いかけた上ではカスタムの
my.ini
ファイルを作成し、次にお客様の回等をテンプレートに反映してインストールに使用する
my.ini
ファイルを作成します。
MySQL 設定ウイザードは MySQL 5.1 サーバに含まれており、現在は Windows のユーザーのみ利用できます。
MySQL 設定ウイザードの大部分は MySQL AB に多くのユーザーがここ数年もたらしてくれたフィードバックに結果です。それでも尚、お客様にとって重要な機能が欠けている場合にば、項1.7. 「質問またはバグの報告」 で説明した手順に従ってそれをバグ データベースにレポートお願いします。
MySQL 設定ウイザードは一般的には MySQL インストール ウイザードがインストールされている場合 MySQL インストール ウイザードから起動します。また、MySQL 設定ウイザードを Windows の
メニューの 欄にある のエントリをクリックすると起動できます。
あるいは、MySQL インストールの
bin
ディレクトリをナビゲートして
MySQLInstanceConfig.exe
ファイルのディレクトリから直接起動できます。
MySQL 設定ウイザードが既存の
my.ini
ファイルを検知した場合、お客様の既存のサーバを再設定するか、あるいは
my.ini
ファイルを削除してサーバインスタンスを削除し
MySQL のサービスを停止して削除します。
既存のサーバを再設定するには、my.ini
ファイル名が
my
に変わり、その timestamp
.ini.baktimestamp
が既存の my.ini
ファイルが作成された日時です。既存のサーバ
インスタンスを削除するには、 オプションを選択し
ボタンをクリックします。
my.ini
ファイルを削除します。サーバのインストールおよびその
data
フォルダは削除されません。
オプションを選択すると、 のダイアログが表示されるので、そこで設定するインストールのタイプを選択します。
MySQL 設定ウイザードを新規の MySQL インストールに起動する、あるいは
オプションを既存のインストールに選択すると、 のダイアログが表示されます。選定タイプは 2種類あります。
および の 2 種類です。 オプションは新規のユーザーがサーバの設定を変更しないで MySQL を直ぐに起動する場合に適しています。 オプションは熟練したユーザー用でサーバの設定を細かく設定する場合に適しています。MySQL を初めて使用されるユーザーで単一ユーザーの開発マシンとしての設定が必要な場合には、
で十分です。 オプションを選択すると および を除くすべての設定オプションを MySQL 設定ウイザードが自動的に設定します。は既存の MySQL がインストールされている場合にシステムに互換がないオプションを設定します。システムに設定するインストール以外に既存の MySQL をインストールしている場合、 オプションをお勧めします。
項2.3.4.11. 「サービス オプション ダイアログ」 および 項2.3.4.12. 「セキュリティ オプション ダイアログ」 の 並びに の項を参照してください。
を完了するには、それぞれ選択可能な異なる 3 種類のサーバタイプがあります。選択するサーバの種類によって MySQL 設定ウイザードのメモリ、ディスク、および使用しているプロセッサに関する決定に影響を与えます。
:MySQL を個人の使用目的のみに使用する場合には、一般的なディストップのワークステーション用としてこのオプションを選択します。他の多くのディスクトップのアプリケーションが実行されているものと想定します。MySQL サーバは最低限のシステム リソース向けに設定されます。
:MySQL サーバが FTP、Eメール、およびウェブ サービスなど他のサーバアプリケーションと一緒に動作しているサーバ マシンにはこのオプションを選択します。MySQL サーバはシステム リソースの平均的な部分を使用するものとして設定されます。
:MySQL サーバのみを運用するサーバ マシンにはこのオプションを選択します。他のアプリケーションを実行していないことを想定した設定です。MySQL サーバは利用できるすべてのシステム リソースを使用する設定になります。
前もって設定された設定を選択すると、お客様の
my.cnf
あるいは
my.ini
の様々なオプションの値や設定がそれぞれ変更されます。ですから、参照マニュアルで説明したデフォルトの値やオプションは設定ウイザードの実行中に作成されたオプションや値と異なる場合があります。
InnoDB
ストレージ
エンジンを利用できるか、何パーセントのサーバ
リソースが InnoDB
に利用できるかを決定します。
InnoDB
および
MyISAM
ストレージ
エンジン両方を有効にしリソースを両方に等分します。このオプションは両方のストレージ
エンジンを定期的に使用するユーザーにお勧めします。
InnoDB
および
MyISAM
ストレージ
エンジンの両方を有効にしますが、殆どのサーバ
リソースは InnoDB
ストレージ
エンジンが使用します。このオプションは
InnoDB
を中心に使用し
MyISAM
は最低限使用するユーザーに適しています。
InnoDB
ストレージ
エンジンを完全に無効にしすべてのサーバ
リソースは MyISAM
ストレージ
エンジンが使用します。このオプションは
InnoDB
を使用しないユーザーにお勧めです。
ユーザーの中には InnoDB
テーブルスペース ファイルを MySQL
サーバのデータディレクトリではなく異なるロケーションに配置することを希望するユーザーもいます。テーブルスペース
ファイルの個別のロケーションへの配置はお客様のシステムが高容量あるいは
RAID ストレージ
エンジンのような高パフォーマンスのストレージ
デバイスを利用できる場合に適しています。
InnoDB
テーブルスペース
ファイルのロケーションを変更するには、ドライブ
レターのドロップダウン
リストから新しいドライブを選択し、パスのドロップダウン
リストから新しいパスを選択します。カスタムのパスを作成するには、
ボタンをクリックします。
既存のサーバの設定を変更するには、パスを変更する前に
ボタンをクリックします。この状況ではサーバを起動する前に既存のテーブルスペース ファイルを新しいロケーションに手動で移動する必要があります。サーバのリソースが不足しないようにするために、確立できる MySQL サーバへの同時接続数を制限することが重要です。
ダイアログでサーバの設定を任意に選択し、同時接続数の制限を設定できます。同接続の制限を手動で設定することも出来ます。:サーバが多数の同時接続を必要としない場合にこのオプションを選択します。接続の最大数を 100 に設定し、平均の 20 の同時接続を想定します。
:サーバが多数の同時接続を必要とする場合にこのオプションを選択します。同時接続の最大数を 500 に設定します。
:サーバへの最大の同時接続数を手動で設定する場合にこのオプションを設定します。表示されたドロップダウン ボックスから任意の接続数を選択するか、任意の接続数が無い場合は最大の接続数をドロップダウン ボックスに入力します。
ダイアログを使用して TCP/IP ネットワークを有効/無効にし、MySQL サーバの接続に使用するポート番号を設定します。
TCP/IP ネットワークはデフォルトで有効になっています。TCP/IP ネットワークを無効にするには、
オプションの隣にあるボックスのチェックを外します。デフォルトでは Port 3306 を使用しています。MySQL の接続に使用するポートを変更するには、ドロップダウン ボックスから新しいポート番号を選択するか、ドロップダウン ボックスに直接ポート番号を入力します。ポート番号を選択すると、そのポート番号の選択を確認するプロンプトが表示されます。
アプリケーションを MySQL の旧式の 「許容」 な振る舞いで動作させるには、それらのアプリケーションを使用するかあるいは厳格モードを無効にします。厳格モードの詳細については、項4.2.6. 「SQL モード」 を参照してください。
設定して厳格モードを有効あるいは無効にします。厳格モード (デフォルト) に設定する MySQL が他のデータベース管理システムと同様の振る舞いをします。MySQL サーバは複数の文字セットをサポートしています。オーバーライドを除いてすべてのテーブル、カラム、およびデータベースに適用されるデフォルトのサーバ文字セットに設定できます。MySQL サーバのデフォルトの文字セットを変更するには
のダイアログを使用します。
latin1
をデフォルトのサーバ文字セットとして使用するにはこのオプションを選択します。latin1
は英語および多くの西部ヨーロッパ言語して使用されています。
utf8
をデフォルトのサーバ文字セットとして使用する場合このオプションを選択します。これはユニコードの文字セットで多くの異なる言語の文字を保持できます。
:サーバのデフォルトの文字セットを手動で選択するにはこのオプションを選択します。任意の文字セットを表示されたドロップダウン リストから選択します。
Windows の NT-ベースのプラットフォームでは、MySQL サーバは Windows のサービスの一貫としてインストールできます。サービスでインストールした場合、MySQL サーバはシステムの起動時に自動的に起動されサービスの不具合時でも Windows を起動すると自動的に再起動します。
MySQL 設定ウイザードがサービス名
MySQL
で MySQL
サーバをデフォルトでインストールします。このサービスのインストールを望まない場合、
のオプションの隣にあるボックスのチェックを外します。表示されたドロップダウン
ボックスから新しいサービス名を選択するか、ドロップダウン
ボックスに新しいサービス名を入力するとサービス名を変更できます。
MySQL サーバをサービスとしてインストールしても起動時の自動的な起動を望まない場合、
のオプションの隣にあるボックスのチェックを外します。
root
パスワードを MySQL
サーバに設定することを強くお勧めします。MySQL
設定ウイザードはデフォルトでその設定を要求します。root
パスワードの設定を望まない場合、
オプションの隣にあるボックスのチェックを外します。
root
パスワードを設定するには、任意のパスワードを
および
のボックスに入力します。既存のサーバを再設定するには、既存の
root
パスワードを
ボックスに入力する必要があります。
ネットワーク上で他の人が root
にログインできないようにするには、
のオプションの隣にあるボックスにチェックを入れます。これにより
root
アカウントのセキュリティが強化されます。
匿名のユーザーアカウントを作成するには、
のオプションの隣にあるボックスにチェックを入れます。匿名のアカウントを作成するとサーバのセキュリティが脆弱になり、ログインおよび許可において困難が伴います。このため、匿名のアカウントはお勧めできません。MySQL 設定ウイザードの最後のダイアログは
です。設定プロセスを実行するには、 ボタンをクリックします。前のダイアログに戻るには、 ボタンをクリックします。MySQL 設定ウイザードをサーバを設定しないで終了するには、 ボタンをクリックします。ボタンをクリックすると、MySQL 設定ウイザードが一連のタスクを実行しタスクの実行に応じて進捗状況を画面に表示します。
MySQL 設定ウイザードは MySQL
の開発者やエンジニアが用意したテンプレートを使用してお客様の選択に基づいて最初に設定ファイル
のオプションを決定します。このテンプレート名は
my-template.ini
でサーバのインストール
ディレクトリにあります。
MySQL
設定ウイザードは次にこれらのオプションを
my.ini
ファイルに書き込みます。my.ini
ファイルの最後のロケーションは Write
configuration file
タスクの隣に表示されます。
MySQL サーバのサービスの作成を選択すと、MySQL 設定ウイザードがサービスを作成して開始します。既存のサービスを再設定すると、MySQL 設定ウイザードがサービスを再起動して設定変更に適用します。
root
パスワードの設定を選択すると、MySQL
設定ウイザードがサーバに接続し、新しい
root
パスワードを設定して選択した他のセキュリティの設定に適用します。
MySQL 設定ウイザードがタスクを完了すると、その概要が表示されます。MySQL 設定ウイザードを終了するには
ボタンをクリックします。
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
サーバに設定オプションに指定したファイルを読み込ませます。
my.ini
ファイルを変更するには、そのファイルをテキスト
エディタで開いて必要な変更を加えます。サーバの設定も
MySQL
Administrator
ユーティティで変更できます。
mysql および
mysqldump
コマンドラインクライアントなどの MySQL
クライアントおよびユーティリティはサーバのインストール
ディレクトリにある my.ini
ファイルのを見つけることはできません。クライアントおよびユーティリティのアプリケーションを設定するには、新しい
my.ini
ファイルを
C:\WINDOWS
あるいは
C:\WINNT
ディレクトリ (お客様の
Windows のバージョンに適したいずれか)
に作成します。
非インストール パッケージからインストールするユーザーは手動で MySQL をインストールする際ここの項の説明を使用します。MySQL を Zip アーカイブからインストールするには以下の手順に従います。
アーカイブを任意のインストール ディレクトリに取り出す
空のファイルを作成する
MySQL のサーバタイプを選択する
MySQL サーバを起動する
デフォルトのユーザーアカウントを確認する
このプロセスはこの後の項で説明します。
MySQL を手動でインストールするには、以下の手順に従います。
以前のバージョンからアップグレードする場合にはアップグレードを始める前に 項2.3.14. 「Windows を使用した MySQL をアップグレードする」 を参照してください。
Windows NT、Windows 2000、Windows XP、あるいは Windows Server 2003 などの Windows NT-ベースのオペレーティング システムを使用している場合には、管理者権限のユーザーとしてログインする必要があります。
インストールのロケーションを選択します。従来、MySQL
サーバは C:\mysql
にインストールされます。MySQL インストール
ウイザードが MySQL を C:\Program
Files\MySQL
にインストールします。MySQL を
C:\mysql
にインストールしない場合、起動時あるいはオープン
ファイルでインストール
ディレクトリへのパスを指定する必要があります。項2.3.7. 「オプション ファイルの作成」
参照。
任意の Zip アーカイブ ツールを使用してインストールするアーカイブを選択したインストールのロケーションに取り出します。ツールによっては選択したインストール ロケーションのフォルダにアーカイブを取り出します。取り出したら、そのサブフォルダの中身を選択したインストール ロケーションに移動できます。
サーバの起動時に起動オプションを指定する必要がある場合には、それらをコマンドラインで指示するかあるいはそれらをオープン ファイルに配置します。サーバの起動時に常に使用するオプションは、オープン ファイルを使用して 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
つを行う必要があります。
data
ディレクトリ全体およびそのすべてのコンテンツを
C:\Program Files\MySQL\MySQL Server
5.1\data
から
E:\mydata
へ移動します。
サーバの起動時に常に新しいデータ
ディレクトリのロケーションを指定するには
--datadir
オプションを使用します。
以下の表は 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 などの別のサーバを使用する場合には、例示のようにコマンドで適切な変更を加えます。
この項では 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. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。
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 に関連したすべてのオプションを表示します。
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 のデスクトップで マイ コンピュータ アイコンを右クリックし、 を選択します。
次に
タブを表示された メニューから選択し、 ボタンをクリックします。System Variables で、 を選択し、次に ボタンをクリックします。 のダイアログが表示されます。
カーソルを Variable Value
の印のついたスペースに表示されたテキストの最後に持って行きます。(カーソルがそのスペースのテキストの一番後ろにあることを確認するには
終了
キーを使用します。)次にお客様の MySQL
bin
ディレクトリの完全なパス名
(例えば、C:\Program Files\MySQL\MySQL Server
5.1\bin
)
を入力します。このパス名の行にはパス名を他の値から分けるためのセミコロンを使用していることにご留意ください。
をクリックして表示されているすべてのダイアログを順番に消します。この段階でシステムのどのディレクトリからでも
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 インストールにおけるトラブルシューティング」 を参照してください。
以下のコマンドのいずれかを実行して 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 ? データベース、テーブル、カラム情報を表示します。」 を参照してください。
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
構文を使用します。
この項では Windows を使用した MySQL のアップグレードに必要なステップについて説明します。
Windows に特化しない MySQL のアップグレードに関する詳細は、項2.11. 「MySQL のアップグレード」 を参照してください。
アップグレードを実行する前に常に現在の MySQL のインストールのバックアップを取る必要があります。項4.9.1. 「データベースのバックアップ」 参照。
http://dev.mysql.com/downloads/ から MySQL の Windows ディストリビューションをダウンロードします。
MySQL をアップグレードする前に、サーバを停止する必要があります。サーバをサービスとしてインストールしている場合は、コマンド プロンプトの以下のコマンドでサービスを停止します。
C:\> NET STOP MySQL
MySQL サーバをサービスを使用せず使用している場合は、以下のコマンドを使用してサーバを停止します。
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root shutdown
注:MySQL の
root
ユーザーアカウントにパスワードが設定されている場合、mysqladmin
を -p
オプションで実行し、プロンプトが表示されたらパスワードを入力します。
MySQL 5.1 を 4.1.5 以前のバージョンからアップグレードする場合、あるいは Zip アーカイブからインストールした MySQL バージョンを MySQL インストール ウイザードでインストールしたバージョンにアップグレードする場合は、以前のインストールと MySQL サービス (サーバがサービスとしてインストールされている場合) を手動で削除する必要があります。
MySQL サービスを削除する場合、以下のコマンドを使用します。
C:\> C:\mysql\bin\mysqld --remove
既存のサービスを削除しなかった場合、MySQL インストール ウイザードは新しい MySQL サービスを適切にインストールできない場合があります。
MySQL インストール ウイザードを使用する場合は、項2.3.3. 「MySQL インストール ウイザードを使用する」 の説明に従ってウイザードを起動します。
Zip アーカイブから MySQL
をインストールする場合、アーカイブを取りだします。既存の
MySQL のインストールを上書きする (通常
C:\mysql
にある)
か、あるいはそれを
C:\mysql5
などの異なるディレクトリにインストールします。既存のインストールの上書きをお勧めしています。
MySQL を Windows のサービスとして使用していて、この手順で以前のサービスを削除し、サービスを再インストールした場合。(項2.3.11. 「Windows のサービスとして MySQL を起動する」 参照。)
サーバを再起動します。MySQL をサービスとして使用している場合、例えば NET START MySQL を使用するか、あるいは mysqld を直接実行します。
エラーが発生したら、項2.3.13. 「Windows への 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 は INSERT
と
SELECT
を混合する際
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 TABLE
の DATA
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
C:\>binary_log_file
--result-file=/tmp/bin.sqlmysql --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 から提供された高速のスレッド セーフな増分/減分メソッドを使用するためにマクロを追加します。
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
'
)
に問題があった場合には、項2.13.1.2. 「Linux バイナリ ディストリビューションの注釈」
を参照してください。
xxxx
' could not be looked
up
殆どの場合、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-
shell>VERSION
.i386.rpmrpm -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. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。
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-
にインストールされると symbolic
link、VERSION
/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.2 | 3.23.51 |
10.2.3-10.2.6 | 3.23.53 |
10.3 | 4.0.14 |
10.3.2 | 4.0.16 |
10.4.0 | 4.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
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 に関する注釈」 を参照してください。
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 にインストールするには、以下の手順を踏みます。
以前のインストールからアップグレードするには、MySQL サーバを停止してください。これはサーバのコンソールから、以下のコマンドを使用して実行できます。
SERVER: mysqladmin -u root shutdown
注:MySQL の
root
ユーザーアカウントにパスワードが設定されている場合、mysqladmin
を -p
オプションで実行し、プロンプトが表示されたらパスワードを入力します。
MySQL をインストールするロケーションにアクセスしてクライアント マシンからターゲットのサーバにログオンします。
サーバにバイナリ パッケージの Zip
ファイルを取り出します。Zip
ファイルのパスが使用できるか確認します。単純にファイルを
SYS:\
に取り出すほうが安全です。
以前のインストールをアップグレードするには、データ
ディレクトリ
(例えば、SYS:MYSQL\DATA
)、および
my.cnf
を、それをカスタマイズしている場合、コピーする必要があります。次に
MySQL の古いコピーを削除します。
ディレクトリを分かり安く使いやすい名前に変更できます。本マニュアルの例ではインストール
ディレクトリに SYS:MYSQL
を使用しています。
MySQL を NetWare へのインストールする際、MySQL
のあるバージョンが既に NetWare
のリリース以外にインストールされている場合は検知しません。ですから、SYS:\MYSQL
のウェブ (例えば、MySQL 4.1
あるいはそれ以降) から最新の MySQL
をインストールした場合、NetWare
のサーバをアップグレードする前にフォルダの名前を変える必要があります。名前を変更しないと
SYS:\MySQL
のファイルは NetWare
サポート パックにある MySQL
で上書きされます。
サーバのコンソールで、MySQL NLM を含むディレクトリに検索パスを追加します。例えば、
SERVER: SEARCH ADD SYS:MYSQL\BIN
データ ディレクトリと許諾テーブルを必要に応じて mysql_install_db をサーバのコンソールで実行して初期化します。
サーバのコンソールで mysqld_safe を使用して MySQL サーバを起動します。
インストールを終了するには、以下のコマンドも
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
TABLE
を myisamchk
の代わりに使用します。それは
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 サーバ スタートアップ スクリプト」 を参照してください。
MySQL を最初にインストール、あるいは以前のバージョンからアップグレードするには、NetWare 用の最新で適切な Perl および PHP 拡張をダウンロードしてインストールします。
NetWare サーバに既存の MySQL
のインストーるがある場合、autoexec.ncf
で既存の MySQL
の起動コマンドを確認し、必要に応じてそれらを編集あるいは削除します。
注:MySQL のグラント テーブルのアカウントには最初はパスワードがありません。サーバの起動後に 項2.10. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。
この項では圧縮 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 <
shell>/path/to/mysql-VERSION-OS
.tar.gz | tar xvf -ln -s
shell>full-path-to-mysql-VERSION-OS
mysqlcd 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. 「インストール後の設定とテスト」 に進みます。
上述のバイナリ ディストリビューションのインストールに関する詳細な説明は以下のようになります。
mysqld にログイン ユーザーとグループを追加するには以下を実行します。
shell>groupadd mysql
shell>useradd -g mysql mysql
これらのコマンドにより mysql
グループと mysql
ユーザーを追加します。useradd
および groupadd の構文は Unix
のバージョンにより多少異なったり、あるいはadduser
および addgroup
など異なる名前が付く場合があります。
ユーザーやグループをmysql
のではなく別の名前に変更することもできます。その場合、以下の手順で別の名前をつけます。
ディストリビューションを解凍するディレクトリを選択してその中にロケーションを変更します。以下の例では、ディストリビューションを
/usr/local
に解凍します。(この説明では、/usr/local
にファイルとディレクトリを作成する権限を有するものとして説明を続けます。ディレクトリが保護されている場合、インストールを
root
として行う必要があります。)
shell> cd /usr/local
ディストリビューションを 項2.1.3. 「MySQL の取得方法」 の説明に従って取得します。所定のリリースでは、すべてのプラットフォームのバイナリのディストリビューションは同じ MySQL のソース ディストリビューションでビルドされています。
ディストリビューションを解凍すると、インストールのディレクトリが作成されます。次にそのディレクトリにシンボリック リンクを作成します。
shell>gunzip <
shell>/path/to/mysql-VERSION-OS
.tar.gz | tar xvf -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
ロケーションをインストールのディレクトリに変更します。
shell> cd mysql
mysql
ディレクトリにはいくつかのファイルとサブディレクトリがあります。インストールに最も重要なものは
bin
および
scripts
のサブディレクトリです。
bin
ディレクトリにはクライアント
プログラムとサーバが含まれています。shell
が MySQL
プログラムを間違いなく見つけるにはこのディレクトリの完全なパス名を
PATH
環境変数に追加する必要があります。項2.14. 「環境変数」
参照。
scripts
ディレクトリは
mysql_install_db
スクリプトを含み、それによってサーバのアクセス権限を保持する許諾テーブルを含む
mysql
データベースを初期化します。
今まで MySQL をインストールしたことがない場合には、MySQL 許諾テーブルを作成する必要があります。
shell> scripts/mysql_install_db --user=mysql
コマンドを root
として実行する場合、以下の
--user
オプションを使用する必要があります。オプションの値はサーバに稼動に使用する最初のステップで作成したログイン
アカウント名になります。そのユーザーでログインしてそのコマンドを実行する場合、--user
オプションは無視できます。
許諾テーブルを作成して更新した後にサーバを手動で再起動する必要があります。
プログラム バイナリの所有者を
root
に、データ
ディレクトリの所有者を mysqld
を運用するユーザーに変更します。インストール
ディレクトリ (/usr/local/mysql
)
にいると想定した場合、そのコマンドは以下のようになります。
shell>chown -R root .
shell>chown -R mysql data
shell>chgrp -R mysql .
最初のコマンドはファイルの所有者属性を
root
ユーザーに変更します。2
番目のコマンドはデータ
ディレクトリの所有者属性 mysql
ユーザーに変更します。3
番目のコマンドはグループ属性を
mysql
グループに変更します。
マシンをブートしたときに MySQL
を自動的に起動する場合は、support-files/mysql.server
をシステムの起動ファイルがあるロケーションにコピーします。詳細
support-files/mysql.server
のスクリプトおよび 項2.10.2.2. 「MySQL を自動的に起動・停止する」
にあります。
DBI
および DBD::mysql
Perl
モジュールをインストールする場合、bin/mysql_setpermission
スクリプトを使用して新しいアカウントを設定できます。その手順は、項2.15. 「Perl のインストールに関する注釈」
を参照してください。
mysqlaccess を使用して MySQL
ディストリビューションを標準とは異なる別のロケーション入れるには、mysqlaccess
が mysql
クライアントを探すロケーションを変更する必要があります。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. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。
ソースからのインストールを始める前に、弊社のバイナリがお客様のプラットフォームで使用できるかまたは機能するかチェックしてください。弊社では弊社のバイナリが最良のオプションでビルドされたものであることを確認するために最大限の努力を払っています。
MySQL のソース ディストリビューションを取得するには、項2.1.3. 「MySQL の取得方法」 を参照してください。
MySQL のソース ディストリビューションは圧縮
tar
アーカイブで提供しており、フォームの名前は
mysql-
です。VERSION
.tar.gzVERSION
は
5.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. 「質問またはバグの報告」 の手順に従ってください。
MySQL のソース ディストリビューションをインストールする際に実行する基本的なコマンドは以下のようになります。
shell>groupadd mysql
shell>useradd -g mysql mysql
shell>gunzip < mysql-
shell>VERSION
.tar.gz | tar -xvf -cd mysql-
shell>VERSION
./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 は、コマンド rpmbuild を rpm で置き換える必要があります。
注:このプロシージャでは MySQL のアカウントのパスワードは設定しません。以下のプロシージャの後、項2.10. 「インストール後の設定とテスト」 に進みインストール後の設定およびテストを行います。
上述のソース ディストリビューションを使用した MySQL のインストールに関する詳細な説明は以下のようになります。
mysqld にログイン ユーザーとグループを追加するには以下を実行します。
shell>groupadd mysql
shell>useradd -g mysql mysql
これらのコマンドにより mysql
グループと mysql
ユーザーを追加します。useradd
および groupadd の構文は Unix
のバージョンにより多少異なったり、あるいはadduser
および addgroup
など異なる名前が付く場合があります。
ユーザーやグループをmysql
のではなく別の名前に変更することもできます。その場合、以下の手順で別の名前をつけます。
ディストリビューションを解凍するディレクトリを選択してロケーションをそれに変更します。
ディストリビューションを 項2.1.3. 「MySQL の取得方法」 の説明に従って取得します。
ディストリビューションを現在のディレクトリに解凍します。
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
ロケーションを解凍したディストリビューションの上段のディレクトリに変更します。
shell> cd mysql-VERSION
現在は MySQL をこの上段のディレクトリから設定してビルドする必要があります。別のディレクトリにビルドすることはできません。
リリースを設定してすべてをコンパイルします。
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 のコンパイルに関する問題」 を参照してください。
ディストリビューションのインストール
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
設定」 参照。
ロケーションをインストールのディレクトリに変更します。
shell> cd /usr/local/mysql
今まで MySQL をインストールしたことがない場合には、MySQL 許諾テーブルを作成する必要があります。
shell> bin/mysql_install_db --user=mysql
コマンドを root
として実行する場合、以下の
--user
オプションを使用する必要があります。オプションの値はサーバに稼動に使用する最初のステップで作成したログイン
アカウント名になります。そのユーザーでログインしてそのコマンドを実行する場合、--user
オプションは無視できます。
mysql_install_db を MySQL の許諾テーブルの作成に使用した後、手動でサーバを再起動する必要があります。これを行うための mysqld_safe コマンドは後のステップで説明します。
プログラム バイナリの所有者を
root
に、データ
ディレクトリの所有者を mysqld
を運用するユーザーに変更します。インストール
ディレクトリ (/usr/local/mysql
)
にいると想定した場合、そのコマンドは以下のようになります。
shell>chown -R root .
shell>chown -R mysql var
shell>chgrp -R mysql .
最初のコマンドはファイルの所有者属性を
root
ユーザーに変更します。2
番目のコマンドはデータ
ディレクトリの所有者属性
mysql
ユーザーに変更します。3
番目のコマンドはグループ属性を
mysql
グループに変更します。
マシンをブートしたときに MySQL
を自動的に起動する場合は、support-files/mysql.server
をシステムの起動ファイルがあるロケーションにコピーします。詳細は
support-files/mysql.server
のスクリプトおよび
項2.10.2.2. 「MySQL を自動的に起動・停止する」 にもあります。
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. 「インストール後の設定とテスト」 の説明に従ってパスワードをアカウントに設定する必要があります。
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++
インストールしていない場合、configure
に gcc を 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
は次のいずれかです。binary
、armscii8
、ascii
、big5
、cp1250
、cp1251
、cp1256
、cp1257
、cp850
、cp852
、cp866
、cp932
、dec8
、eucjpms
、euckr
、gb2312
、gbk
、geostd8
、greek
、hebrew
、hp8
、keybcs2
、koi8r
、koi8u
、latin1
、latin2
、latin5
、latin7
、macce
、macroman
、sjis
、swe7
、tis620
、ucs2
、ujis
、utf8
。項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
PLUGIN
は csv
あるいは archive
など個別のプラグイン名です。
略語では、GROUP
は
none
(プラグインの選択なし)
あるいは all
(すべてのプラグインの選択)
など設定グループ名を表します。
--with-plugins
にはコンマ区切られた、あるいはプラグイン
グループ名の一つ以上のプラグイン名のリストがあります。名前付きプラグインは静的プラグインとしてのビルド用に構成されています。
--with-plugin-
は所定のプラグインを静的なプラグインとしてビルドできるように設定します。
PLUGIN
--without-plugin-
は所定のプラグインのビルドを無効にします。
PLUGIN
プラグインが --with
あるいは
--without
オプションの両方で 名前がある場合、その結果は定義できません。
明示的な選択あるいは無効になっていないプラグインは、動的ビルドをサポートしている場合に動的にビルドに選択され、動的ビルドをサポートしていない場合は選択されません。(このように、プラグインのオプションが与えられない場合、動的ビルドをサポートするすべてのプラグインは動的プラグインとしてのビルドに選択されます。動的ビルドをサポートしていないプラグインはビルドされません。)
注意 :このセクションは、当社の新しいコードのテストに協力していただける場合にのみお読みください。単に MySQL を立ち上げてお客様のシステムを運用する場合には、標準のディストリビューション (バイナリあるいはソースのディストリビューション) を使用されるようお願いします。
最新の開発ソース
ツリーを取得するには、BitKeeper
が手元にない場合は最初にダウンロードし、BitKeeper
のフリークライアントをインストールします。クライアントは
http://www.bitmover.com/bk-client2.0.shar
から入手できます。BitKeeper
フリークライアントをビルドするには
gcc
と make
、および
BitKeeper フリークライアントを使用するには
patch と tar
が必要です。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 にインストールするには、以下の説明書を使用します。
Cygwin を http://cygwin.com からダウンロードしてインストールします。
patch、tar、gcc
および make が Cygwin
でインストールされていることを確認します。.各コマンドに
which gcc
を発行してこれをテストします。必要なツールがインストールされていない場合、Cygwin
のパッケージ
マネージャを実行して、必要なツールを選択してインストールします。
BitKeeper フリークライアントのインストールには、上記の Unix と同じようなインストールを行います。
BitKeeper フリークライアントの出荷にはソースコードが同梱されています。そのフリークライアントで利用できる説明資料はそのソースコードのみです。
BitKeeper クライアントをインストールすると、MySQL 開発ソースのツリーにアクセスできます。
使用するディレクトリにロケーションを変更し、以下のコマンドを使用して MySQL 5.1 バージョンのローカルのコピーを取ります。
shell> bkf clone bk://mysql.bkbits.net/mysql-5.1 mysql-5.1
上記の例で、ソースツリーが現在のディレクトリの
mysql-5.1/
のサブディレクトリに設定されます。
ソースツリーの最初のダウンロードは、接続の速度によって多少時間がかかります。気長にお待ちください。
次のステップのコマンドを実行するには GNU make、autoconf 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
専用のフラグを削除してスクリプトを変更します。
ビルドが終了したら、make
install
を実行します。この実行は量産マシンでは注意してください。そのコマンドによって実際のリリースのインストールがオーバーライドされる場合があります。MySQL
を別にインストールしている場合には、./configure
を
--prefix
、--with-tcp-port
、および
--unix-socket-path
オプションに対して量産サーバに使用した値と異なる値で実行することをお勧めします。
インストールしたら色々試し新機能をクラッシュさせてみてください。make test の実行から始めてみてください。項25.1.2. 「MySQL Test Suite」 参照。
make
段階になっても、ディストリビューションのコンパイルができない場合は、項1.7. 「質問またはバグの報告」
の説明に従ってその問題を弊社のバグ
データベースに入力お願いします。.必要な
GNU
のツールの最新バージョンをインストールして、弊社の設定ファイルの処理中にクラッシュする場合には、その件も併せてご連絡お願いします。しかし、aclocal
を実行して command not found
エラーが発生した場合あるいは同様の問題が発生した場合には、レポートしないでください。その代わり、必要なすべてのツールがインストールされ
shell がパスを見つけられるように
PATH
変数が正しく設定されているか確認してください。
ソースツリーを取得するためにレポジトリを最初に bkf でコピーしたら、pull オプションを使用して定期的にローカルのコピーを更新する必要があります。レポジトリ設定後にこれを行う時には、以下のコマンドを使用します。
shell> bkf pull
ツリーの変更セットのコマンドを
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 に進みます。
すべての 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
問題は gcc が
sql_yacc.cc
をインライン機能でコンパイルするには非常に大きなメモリが必要だということです。configure
を--with-low-memory
オプションで実行してみます。
shell> ./configure --with-low-memory
このオプションはgcc
を使用しているときには
-fno-inline
をコンパイル行に追加し、何か他のものを使用している場合には-O0
を追加します。多分大丈夫だろうと思われる十分なメモリとスワップ
スペースがある場合は、--with-low-memory
オプションを試してみる必要があります。この問題は十分なハードウェア設定のシステムでも発生するとこが観察されており、--with-low-memory
オプションで通常その問題を修正できます。
デフォルトでは、configure が
c++
をコンパイラ名として使用し、GNU
c++ は-lg++
にリンクします。gcc
を使用している時に、その振る舞いにより設定中に以下のような問題が発生します。
configure: error: installation or configuration problem: C++ compiler cannot create executables.
また
g++、libg++
、あるいはlibstdc++
に関連したコンパイル中にも問題が起こる場合もあります。
これらの問題の一つに 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
をコンパイル中に以下のようなエラーが発生した場合、configure
が
accept()
、getsockname()
、あるいは
getpeername()
の最後の引数の種類を正しく検知していなかったことになります。
cxx: Error: mysqld.cc, line 645: In this statement, the referenced type of the pointer value ''length'' is ''unsigned long'', which is not compatible with ''int''. new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
この問題を解決するには、config.h
ファイル (configure
により生成される)
を編集します。以下の行を探します。
/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX
XXX
を size_t
あるいは int
にオペレーティングシステムに従って変更します。(configure
がconfig.h
を生成しますので、configure
を実行するたびにこれを行います。)
sql_yacc.cc
ファイルはsql_yacc.yy
から生成されます。.通常は、ビルド
プロセスは 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 再度実行します。
この項では 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
あるいは --host
を
localhost
以外の値で使用する必要があります。
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
はまだありません。(これは必要ありませんが、興味あるユーザーがいるかも知れません。)
これらの説明書は 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 つの方法で取得できます。
MySQL AB からソースのディストリビューションを入手する。これらは http://dev.mysql.com/downloads/ にあります。
最新の BitKeeper 開発ソースツリーからご自身でソース ディストリビューションをパッケージする。最新のソース ファイルに関する説明書は、項2.9.3. 「開発ソース ツリーからのインストール」 を参照してください。
何か期待通りに動作しない、あるいは Windows
を使用した現在のビルド
プロセスの改善ための助言が必要な場合には、win32
メーリング
リストにメッセージを送ってください。項1.6.1. 「MySQL メーリング リスト」
参照。
MySQL をビルドするには以下の手順に従います。
パッケージのディストリビューションからインストールする場合、作業ディレクトリ
(例えば、C:\workdir
)
を作成し、WinZip あるいは
.zip
ファイルを読める別の
Windows のツールを使用してソース
ディストリビューションを作業ディレクトリに解凍します。このディレクトリは作業ディレクトリでその手順は以下のようになります。
BitKeeper ツリーからインストールする場合、そのツリーのルート ディレクトリは作業ディレクトリで以下の手順に従います。
コマンド シェルを使用するには、作業ディレクトリをナビゲートして以下のコマンドを実行します。
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=
:Server
コメント、デフォルトは 「ソース
ディストリビューション」
comment
MYSQL_TCP_PORT=
:サーバ
ポート、デフォルトは 3306。
port
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
作業でディレクトリから、インストールした
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)
あるいはそれ以上を使用する必要があります。
作業ディレクトリで、生成された
mysql.sln
ファイルを Visual
Studio で開いて、
メニューで適切な設定を選択します。メニューには
、 、 、
オプションがあります。次に
>
を選択してソリューションをビルドします。
このステップで使用した設定を覚えておきます。これは後でスクリプトを実行するときに重要になります。というのは、スクリプトはどの設定になっているか知る必要があるからです。
サーバのテスト。上記の手順でビルドしたサーバの
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 をインストールすることもできます。
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 のインストールに関する注釈」 参照。
作業ディレクトリから、以下のディレクトリを
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 をインストールする」 参照。
MySQL Windows のソースを Borland C++ 5.02 でコンパイルできます。(Windows のソースはMicrosoft VC++ 用のプロジェクトしか含んでいないため、Borland C++ の場合にはご自身でプロジェクトファイルを作成する必要があります。
Borland C++ の既知の問題の一つは、VC++
とは構成の配列が異なっていることです。このとは、デフォルトの
libmysql.dll
ライブラリ (VCC++
でコンパイルした) を Borland C++
に使用すると問題が発生するということを意味します。この問題を避けるには、mysql_init()
を NULL
で引数としてコールするだけで、事前に割り当てられた
MYSQL
構成としてコールしないことです。
ソース ファイルには、my_global.h
を mysql.h
の前に含める必要があります。
#include <my_global.h> #include <mysql.h>
my_global.h
には Windows
でプログラムをコンパイルするために必要な
Windows 互換 (windows.h
など)
の他のファイルが含まれています。
コードをオンデマンドで
libmysql.dll
にロードする単なるラッパーである動的な
libmysql.lib
ライブラリにリンクさせるか、あるいは静的な
mysqlclient.lib
ライブラリにリンクできます。
MySQL クライアント ライブラリはスレッド ライブラリとしてコンパイルされますので、コードもマルチ スレッドとしてコンパイルする必要があります。
MySQL のインストール後に、処理しなければならない問題が幾つかあります。例えば、Unix では、データ ディレクトリを初期化して MySQL グラント テーブルを作成する必要があります。すべてのプラットフォームで、重要なセキュリティの問題はグラント テーブルの最初のアカウントにはパスワードがないということです。MySQL サーバへの権限のないアクセスを妨げるにはパスワードを割り当てる必要があります。オプションで、タイム ゾーン テーブルを作成して名前付きタイム ゾーンの認識を有効にできます。
次項以降では、Windows システムおよび Unix システムに特定したインストール後の手順について説明します。別のセクション、項2.10.2.3. 「MySQL サーバの起動とトラブルシューティング」 ではすべてのプラットフォームでのサーバの起動時の問題について説明します。項2.10.3. 「最初の MySQL アカウントの確保」 もすべてのプラットフォームに関する説明です。MySQL アカウントをアカウントにパスワードを割り当てて適切に保護していることを確認するには以下の手順に従います。
新たにユーザー アカウントを作成する用意ができたら、項4.7. 「MySQL アクセス権限システム」 および 項4.8. 「MySQL ユーザ アカウント管理」 にある MySQL アクセス管理システムに関する情報およびアカウント管理を参照してユーザーアカウントを設定します。
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 を起動する」 を参照してください。.
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
で動作します。これはそのようなアカウントが存在することを前提にしています。アカウントがない場合アカウントを作成するか、あるいはサーバの稼動に使用する別の既存のログイン
アカウントで置き換えます。
ロケーションを MySQL
の最上段のディレクトリに変更すると、ここでは
BASEDIR
になります。
shell> cd BASEDIR
BASEDIR
は
/usr/local/mysql
あるいは
/usr/local
のようなものです。.以下のステップはユーザーがこのディレクトリにあるものとの前提に基づいたものです。
必要に応じて mysql_install_db プログラムを実行して、ユーザーのサーバ接続へのアクセス方法を決定する権限を含む最初の MySQL グラント テーブルを設定します。インストールのプロシージャではそのプログラムが起動しないディストリビューションを使用している場合にこの手順が必要です。
一般的には、mysql_install_db はMySQL を最初にインストールする際にのみ実行する必要があるので、既存のインストールをアップグレードした場合にはこのステップをスキップできます。しかし、mysql_install_db は既存の権限テーブルを上書きしないので、どの環境でもこれを実行するのが安全かも知れません。
グラント
テーブルを初期化するには、mysql_install_db
が bin
にあるかあるいは
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_db を
root
として実行する際に以下のように使用される必要があります。または、mysql
としてログインする際にそのスクリプトを実行する必要があります。その場合
--user
オプションをコマンドから除外できます。
mysql_install_db
は幾つかのテーブルを mysql
データベースに作成します。その中には
user
、db
、host
、tables_priv
、columns_priv
、func
、およびその他が含まれます。これらのテーブルの完全なリストおよびその説明は、項4.7. 「MySQL アクセス権限システム」
を参照してください。
test
データベースが必要ない場合には、サーバの起動後に
mysqladmin -u root drop test
でそれを削除できます。
この段階で mysql_install_db で問題に遭遇した場合、項2.10.2.1. 「mysql_install_db 実行中の問題」 を参照してください。
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 サーバの起動とトラブルシューティング」 を参照してください。
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
オプションで起動します。
shell> bin/mysqladmin -u root shutdown
サーバを再度起動できるか確認します。mysqld_safe を使用するかあるいはmysqld 直接実行して起動を確認します。例えば、
shell> bin/mysqld_safe --user=mysql --log &
mysqld_safe が失敗したら、項2.10.2.3. 「MySQL サーバの起動とトラブルシューティング」 を参照します。
簡単なテストをしてサーバから情報を取り出せるか確認します。その出力は以下に示すものと類似しているはずです。
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_% | | +------+--------+------+
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-
の名前の個別のベンチマーク RPM
ファイルがあり、その中にはベンチマークのコードおよびデータが含まれています。
VERSION
-i386.rpm
ソースのディストリビューションの場合には、実行できるテストも
tests
サブディレクトリにあります。例えば、auto_increment.tst
を実行するには、このコマンドをソース
ディストリビューションの最上段のディレクトリから実行します。
shell> mysql -vvf test < ./tests/auto_increment.tst
テストの予想結果は
./tests/auto_increment.res
ファイルにあります。
この段階では、サーバが稼動していなければなりません。しかし、最初の MySQL アカウントにはどれもパスワードがないため、項2.10.3. 「最初の MySQL アカウントの確保」 の手順に従ってパスワードを割り当てる必要があります。
MySQL 5.1 のインストール
プロシージャが mysql
データベースでタイム ゾーン
テーブルを作成します。しかし、テーブルは
項4.10.8. 「MySQL サーバのタイム ゾーン サポート」
の手順に従って手動で構成する必要があります。
mysql_install_db スクリプトの目的は新しい MySQL 権限テーブルを生成することです。それは既存の MySQL 権限テーブルを上書きしないので、他のデータに影響を及ぼすことはありません。
権限のテーブルを再度作成するには、稼動している
mysqld
サーバを停止します。次にデータ
ディレクトリの mysql
ディレクトリの名前を変更して保存し、次に
mysql_install_db
を実行します。.お客様の現在のディレクトリが
MySQL のインストール ディレクトリで
mysql_install_db が
bin
ディレクトリにあり、データ
ディレクトリ名が data
のであるとします。mysql
データベースの名前を変更し
mysql_install_db
を実行するには、以下のコマンドを使用します。
shell>mv data/mysql data/mysql.old
shell>bin/mysql_install_db --user=mysql
mysql_install_db を実行すると、以下の問題が発生する場合があります。
mysql_install_db によるグラント テーブルのインストールの失敗
mysql_install_db がグラント テーブルのインストールに失敗し以下のメッセージの表示後に終了する場合があります。
Starting mysqld daemon with databases from XXXXXX mysqld ended
この場合、エラーのログ
ファイルを非常に慎重に調べる必要があります。ログ
ファイルはエラーメッセージの名前が付いてディレクトリXXXXXX
に格納され、mysqld
が起動しなかった理由が示されます。どんな問題が発生したか分からない場合、バグ
レポートをポストする時にログを一緒に送ります。項1.7. 「質問またはバグの報告」
参照。
mysqld プロセスが実行されている
これはサーバが稼動していることを示しています。この場合グラント テーブルは多分既に作成されています。その場合、mysql_install_db を起動する必要はまったくありません。なぜなら、それは一度だけ起動する必要があるからです (最初に MySQL をインストールした場合)。
1 台のサーバの起動中に 2 番目の mysqld サーバのインストールはできません。
これは既存の MySQL のインストールがあり、異なるロケーションに新たにインストールを行う場合に起こります。例えば、量産(実稼働中)インストールが既にあり、テスト目的に 2 番目のインストールを希望される場合です。一般的に 2 番目のサーバを起動しようとした時に起こる問題は 2 台目のサーバが 1 台目のサーバが使用しているネットワーク インターフェースを使用しようとした場合に発生します。この場合、以下のエラーメッセージのいずれかが表示されます。
Can't start server: Bind on TCP/IP port: Address already in use Can't start server: Bind on unix socket...
複数のサーバの設定に関する説明は、項4.12. 「同じマシン上での複数 MySQL サーバの実行」 参照してください。
あなたには
/tmp
ディレクトリへの書き込みアクセスがありません
一時ファイル作成の書き込みアクセスがない場合あるいは
Unix ソケット
ファイルがデフォルトのロケーション (
/tmp
ディレクトリ)
にない場合に、mysql_install_db
を実行したり mysqld
サーバを起動するとエラーが発生します。
一時ディレクトリまたは Unix のソケット
ファイルに mysql_install_db
あるいは mysqld
を起動する前に以下のコマンドを実行して別のロケーションを指定できます。そこではsome_tmp_dir
は許可を書いたディレクトリへのフルのパス名です。
shell>TMPDIR=/
shell>some_tmp_dir
/MYSQL_UNIX_PORT=/
shell>some_tmp_dir
/mysql.sockexport TMPDIR MYSQL_UNIX_PORT
次に mysql_install_db を起動し以下のコマンドでサーバを起動します。
shell>bin/mysql_install_db --user=mysql
shell>bin/mysqld_safe --user=mysql &
If mysql_install_db が
scripts
ディレクトリにある場合には、最初のコマンドを
scripts/mysql_install_db
に変更します。
項B.1.4.5. 「How to Protect or Change the MySQL Unix Socket File」、および 項2.14. 「環境変数」 参照。
MySQL で提供された mysql_install_db スクリプトを実行する幾つかの代案があります。
最初の権限を標準のデフォルトと別にしたい場合、それを実行する前にmysql_install_db
を変更します。しかし、GRANT
および REVOKE
をグラント
テーブルを設定した後に
使用して権限を変更することが好ましい。換言すると、mysql_install_db
を起動し、次に mysql -u root
mysql
を使用してサーバに MySQL
root
ユーザーとして接続します。これで必要な
GRANT
および
REVOKE
ステートメントを発行できます。
同じ権限で複数のマシンに MySQL
をインストールする場合、GRANT
および REVOKE
ステートメントを一つのファイルに入れ、そのファイルを
mysql
を使用してスクリプトとして
mysql_install_db
を起動後に実行します。.例えば、
shell>bin/mysql_install_db --user=mysql
shell>bin/mysql -u root < your_script_file
このようにすることで、各マシンでステートメントを手動で発行する必要がなくなります。
グラント
テーブルを作成した後に再度完全に作成できます。これらは
MySQL_install_db を起動後に
GRANT
および
REVOKE
の使用の仕方を学ぶためにを色々変更を加えその後にテーブルからそれらをの変更を削除して起動する再に必要になります。
グラント
テーブルを再度作成するには、mysql
データベース ディレクトリにあるすべての
.frm
、.MYI
、および
.MYD
ファイルのすべて削除します。次に
mysql_install_db
スクリプトを再度実行します。
mysqld を
--skip-grant-tables
オプションを使用して手動で起動してmysql
を使用してご自身で権限情報を追加することができます。
shell>bin/mysqld_safe --user=mysql --skip-grant-tables &
shell>bin/mysql mysql
mysql から、mysql_install_db の SQL コマンドを手動で実行できます。mysqladmin flush-privileges あるいは mysqladmin reload を後で実行してグラント テーブルをリロードするようサーバに指定します。
mysql_install_db を使用しなかった場合は、グラント テーブルを手動で作成しなければならないのみならず、それらを最初に作成しなければなりません。
一般的には 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-
)
を使用する場合には、mysql.server
スクリプトを VERSION
.rpm/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
スクリプトは以下のオプションを実行します。basedir
、datadir
、および
pid-file
。指定する場合には、それらはコマンドラインではなくオプション
ファイルに入れる 必要が
あります。 mysql.server は
start
および stop
をコマンドラインの引数として理解します。
以下のテーブルはどのオプション グループからサーバおよび各起動スクリプトがオプション ファイルを読むか示しています。
スクリプト | オプション グループ |
mysqld | [mysqld] , [server] ,
[mysqld- |
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. 「オプションファイルの使用」 を参照してください。
この項では Unix 上のサーバ起動時の問題に関するトラブルシューティングについて説明します。Windows を使用している場合には、項2.3.13. 「Windows への MySQL インストールにおけるトラブルシューティング」 を参照してください。
サーバの起動時に問題がある場合、以下を試してみます。
エラーログをチェックしてサーバが起動しない理由を調べます。
使用しているストレージ エンジンに必要なオプションを指定します。
サーバがデータ ディレクトリの場所を検索できるか確認します。
サーバがデータ ディレクトリにアクセスできるか確認します。データ ディレクトリおよびそのコンテンツの所有者の権利および権限をサーバがそれらを読み込んで変更できるように設定します。
サーバに必要なネットワーク インターフェースが利用できるか確認します。
ストレージ
エンジンにその振る舞いを管理するオプションが付いているものもあります。my.cnf
ファイルを作成して使用するエンジンの起動オプションを指定します。トランザクション
テーブル
(InnoDB
、NDB
)
をサポートするストレージ
エンジンを使用する場合には、サーバを起動する前にそれらが所定の設定になっているか確認します。
MySQL Enterprise お客様の環境に適した起動オプションに関する専門家の助言が必要な場合には、MySQL ネットワーク モニタリングおよびアドバイザリ サービスのご購読をお勧めします。詳細は、http://www.mysql.com/products/enterprise/advisors.html を参照してください。
InnoDB
テーブルを使用している場合は、項13.5.3. 「InnoDB
設定」
を参照してください。
MySQL Cluster を使用している場合、項14.4. 「MySQL Cluster の設定」 を参照してください。
ストレージ エンジンは特に指定しない場合はデフォルトの値を使用します。しかし、デフォルトの値が必ずしも適切であるとは限らないので利用できるオプションを確認して明示的に値を指定することをお勧めします。
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
.loghost_name
はサーバのホスト名です。次にこれらのファイルの最後の数行を調べます。Unix
では、それらの表示に tail
を使用します。
shell>tail
shell>host_name
.errtail
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
を実行してみます。(デフォルトの MySQL
ポート番号は 3306 です。)次に Enter
を数回押します。次のようなエラーメッセージが表示されなかった場合
your_host_name
tcp_ip_port_number
telnet:Unable to connect to remote host:Connection
refused
、mysqld
が使用しようとしている TCP/IP
ポートを他のプログラムが使用しています。その際どのプログラムが使用しているかを調べてそれを無効にするか、または
mysqld に --port
オプションで別のポートを指定します。この場合、サーバに
TCP/IP 経由で接続する際にクライアント
プログラムにポート番号を指定する必要があります。
ポートが接続できない別のの理由にファイアウォールがその接続をブロックしている場合があります。その場合、ファイアウォールの設定をポートにアクセスできるように変更します。
サーバが起動しても接続できない場合、以下のようなエントリが
/etc/hosts
ないか確認します。
127.0.0.1 localhost
この問題は実行中のスレッド ライブラリがないシステムで MIT-pthreads を使用する設定が必要な MySQL でのみ発生します。
mysqld
を起動できない場合、トレース
ファイルを作成し --debug
オプションを使用して問題を探します。Creating Trace Files
参照。
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('
mysql>newpwd
');SET PASSWORD FOR ''@'%' = PASSWORD('
newpwd
');
Unix で SET PASSWORD
を使用するには、以下のようにします。
shell>mysql -u root
mysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('
mysql>newpwd
');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('
mysql>newpwd
');SET PASSWORD FOR 'root'@'%' = PASSWORD('
newpwd
');
Unix では、以下のようにします。
shell>mysql -u root
mysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('
mysql>newpwd
');SET PASSWORD FOR 'root'@'
host_name
' = PASSWORD('newpwd
');
2 番目の SET PASSWORD
ステートメントでは、host_name
をサーバのホスト名で置き換えます。これは匿名アカウントのパスワードを割り当てた時に使用したホスト名と同じものです。
パスワードを root
アカウントに
mysqladmin
を使用して割り当てるには、以下のコマンドを実行します。
shell>mysqladmin -u root password "
shell>newpwd
"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 への新規ユーザの追加」
を参照してください。
一般的な規則として一つのリリースのシリーズから別のリリースのシリーズにアップグレードするには、シリーズをスキップしないで次のシリーズにアップグレードすることをお勧めします。例えば、現在使用している 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
インターフェースにも言えます。
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_name
ENGINE =
テーブル
オプションに対してまだ類義語として受け入れられますが、警告が表示されます。このオプションは
MySQL 5.1.7
では利用できず、MySQL 5.2
ではすべて削除されますので構文エラーが表示されます。.
engine_name
TYPE
は MySQL 4.0
以降は使用していません。
非互換の変更:
トリガのネームスペースは MySQL 5.0.10
では変更になっています。トリガ名は以前はテーブルごとに一意でなければなりませんでした。現在はそれらはスキーマ
(データベース)
ごとに一意です。この変更によって
DROP TRIGGER
構文は現在テーブル名の代わりにスキーマ名を使用しています
(スキーマ名はオプションで、削除された場合は現在のスキーマが使用されます)。
旧バージョンの MySQL 5 から MySQL 5.0.10
あるいはそれ以降にアップグレードする場合、すべてのトリガを削除して再度作成しなければ
DROP TRIGGER
はアップグレード後は機能しなくなります。以下のその手順を示します。
MySQL 5.0.10
あるいはそれ以降にアップグレードすると
INFORMATION_SCHEMA.TRIGGERS
テーブルでトリガ情報にアクセスできます。(-5.0.10
トリガでも機能する必要があります。)
以下の 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
ファイルで確認し、そのファイルのバックアップを取るとよいでしょう。
サーバを停止してすべてのトリガをすべての
.TRG
ファイルをデータベースのディレクトリから削除して削除します。ロケーションをデータ
ディレクトリに変更して以下のコマンドを発行します。
shell> rm */*.TRG
サーバを起動し triggers.sql
ファイルを使用してすべてのトリガを再度作成します。例えば、私の場合には:
mysql>delimiter // ;
mysql>source /tmp/triggers.sql //
すべてのトリガの作成が 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)
.frm
、.MYI
、および
.MYD
ファイルを
MyISAM
テーブルに同じフローティング ポイント
フォーマットをサポートしている異なるアーキテクチャ間でコピーでします。(MySQL
はバイト
スワッピング問題を処理します。.)項13.4. 「MyISAM
ストレージエンジン」
参照。
データベースを異なるアーキテクチャ間で移動する場合、mysqldump を使用して SQL ステートメントを含むファイルを作成します。次にそのファイルを別のマシンに転送して mysql クライアントの入力として扱います。
利用できるオプションを表示するには mysqldump --help を使用します。データを新しいバージョンの MySQL に移動するには mysqldump --opt を使用して最適化を活用することによってさらに小さくて迅速に処理が可能なダンプ ファイルを作成します。
データベースを 2 つのマシンで間で移動する最も容易な方法(速くはないが)はデータベースを搭載したマシン上で以下のコマンドを実行することです。す。
shell>mysqladmin -h '
shell>other_hostname
' createdb_name
mysqldump --opt
db_name
| mysql -h 'other_hostname
'db_name
データベースを遠隔のマシンから速度の遅いネットワークにコピーするには、以下のコマンドを使用します。
shell>mysqladmin create
shell>db_name
mysqldump -h '
other_hostname
' --opt --compressdb_name
| mysqldb_name
ダンプをファイルに保存して、そのファイルをターゲット マシンに転送し、そのファイルをそこのデータベースにロードすることもできます。例えば、データベースをソース マシンの圧縮ファイルに以下のようにダンプします。
shell> mysqldump --quick db_name
| gzip > db_name
.gz
データベースのコンテンツを含んだファイルをターゲット マシンに転送しそこで以下のコマンドを実行します。
shell>mysqladmin create
shell>db_name
gunzip <
db_name
.gz | mysqldb_name
データベースの転送に mysqldump
および mysqlimport
を使用することもできます。大きなテーブルの場合、これは単に
mysqldump
を使用するよりも非常に速く転送できます。.以下のコマンドで、DUMPDIR
は mysqldump
の出力の保存に使用されるディレクトリのフルのパス名です。
最初に、その出力ファイルのディレクトリを作成してデータベースをダンプします。
shell>mkdir
shell>DUMPDIR
mysqldump --tab=
DUMPDIR
db_name
次に DUMPDIR
ディレクトリのファイルをターゲット
マシンの相当するディレクトリに転送して、そのファイルをそこの
MySQL にロードします。
shell>mysqladmin create
shell>db_name
# create databasecat
shell>DUMPDIR
/*.sql | mysqldb_name
# create tables in databasemysqlimport
db_name
DUMPDIR
/*.txt # load data into tables
mysql
データベースのコピーを忘れないでください。そこにグラント
テーブルが保存されています。コマンドを MySQL
root
ユーザーとして新しいマシンで
mysql
データベースの用意できるまで実行することもできます。
mysql
データベースを新しいマシンにインポートしたら、mysqladmin
flush-privileges
を実行してサーバにグラント
テーブルの情報をロードさせます。
この項ではあまりあり得ないケースだが旧バージョンが新しいバージョンより優れている場合における旧 MySQL バージョンにへのダウングレードの手順について説明します。
同じリリースのシリーズ (例えば、5.0.13 から 5.0.12) 内でのダウングレード際の一般的な規則としては新しいバイナリを旧バージョンの上段にインストールすることです。この場合データベースにはなにもする必要はありません。いつものように、この場合もバックアップを取ります。
以下の項目はダウングレードする際に必ず実施するチェックリストを示したものです。
ダウングレードするリリース シリーズのアップグレードの項を読み、実際に必要な機能がないことを確認します。 項2.11. 「MySQL のアップグレード」.
そのバージョンのダウングレードの項ある場合には、それも同様に読む必要があります。
MySQL のフォーマット ファイルやデータ ファイルを MySQL の同じリリースのバージョン内に限り同じアーキテクチャの異なるバージョン間で移動できます。
一つのリリース シリーズから別のリリース
シリーズにダウングレードする場合、テーブル
ストレージ
フォーマットの互換性が取れなくなる場合があります。このような場合、mysqldump
を使用してダウングレードする前にテーブルをダンプできます。ダウングレードしたら、mysql
あるいは mysqlimport
を使用してダンプ
ファイルをロードしテーブルを作成します。参考例は、項2.11.2. 「MySQL データベースの他のマシンへのコピー」
を参照してください。
ダウンロードした際のテーブル フォーマット変更による非互換問題の一般的な現象はテーブルを開くことができないことです。そのような場合には、以下の手順に従います。
新バージョンからダウングレードしている旧 MySQL サーバを停止します。
旧バージョンにダウングレードしている新しい MySQL サーバを再起動します。
mysqldump を使用して旧サーバにアクセスできなかったテーブルをダンプして新たにダンプファイルを作成します。
新しい MySQL サーバを停止して旧サーバを再起動します。
旧サーバにダンプ ファイルをロードします。これでテーブルにアクセスでるはずです。
MySQL 5.0
はイベントをサポートしていません。データベースにイベントが含まれる場合には
mysqldump を使用するときに
--skip-events
オプションを使用してイベントがダンプされないようにします。(項7.12. 「mysqldump ? データベースバックアッププログラム」
参照。)
この項では Linux を使用した場合に発生する問題について説明します。この項の前半ではバイナリおよびソースのディストリビューションを使用した際のオペレーティング システムに関する一般的な懸案事項および問題、およびインストール後の懸案事項について説明します。この項の後半では Linux の特定のプラットフォームでの問題について説明します。
これらの問題の多くは旧バージョンの 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 つ目はアラームおよび信号を扱います。
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_db の
resolveip
テストを実行しません。問題はホスト名をグラント
テーブルで使用できないことです。localhost
以外に、IP
番号を使用する必要があります。--force
をサポートしていない旧バージョンの MySQL
を使用している場合、テキスト
エディタを使用してmysql_install
の resolveip
テストを手動で削除する必要があります。
mysqld を --user
オプションで実行する際にも以下のエラーが表示される場合があります。
getpwnam: No such file or directory
この問題を回避するには、--user
オプションを指定しないで
mysqld を su
コマンドで実行します。これによりシステムそのもので
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 のソケット ファイル接続を使用することです。
以下の 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_MAX
を
sysdeps/unix/sysv/linux/bits/local_lim.h
で 4096 に増やし STACK_SIZE
を
linuxthreads/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
この問題は以下のメソッドのいずれかで回避できます。
富士通のコンパイラ (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
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
の性能がどのように良くなるか情報を集めています。お客様がその様なシステムにアクセスして何かベンチマークを行った場合、その結果を
<benchmarks@mysql.com>
まで Eメール頂ければ幸甚です。.弊社ではそれを検討してマニュアルに追加するかどうかを検討します。
ps で mysql サーバプロセスがデッドした場合、これは通常 MySQL にバグがあるかあるいはテーブルが破損していることを意味します。項B.1.4.2. 「What to Do If MySQL Keeps Crashing」 参照。
mysqld が SIGSEGV
信号でデッドした場合に Linux でコア
ダンプを取得するには、mysqld を
--core-file
オプションで起動します。多分コア
ファイルのサイズを ulimit -c
1000000 を mysqld_safe
に追加あるいは mysqld_safe を
--core-file-size=1000000
で起動して増やす必要があります。.項4.3.1. 「mysqld_safe ? MySQL サーバ スタートアップ スクリプト」
参照。
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
ライブラリを使用している場合、mysqld
が gethostbyaddr()
でデッドする場合があります。これは新しい
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
実装の際に、readdir_r()
が破損する場合があります。その兆候としては
SHOW DATABASES
ステートメントが常に空のセットを返します。これは設定後のコンパイルする前に
HAVE_READDIR_R
を
config.h
から削除することで修正できます。
弊社の 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-static
を gcc
では使用しない
ということになります。
MySQL を Qube2 (Linux Mips)
で動作させるには、最新の glibc
ライブラリが必要です。glibc-2.0.7-29C2
は動作するといわれています。また
egcs C++ コンパイラ
(egcs 1.0.2-9、gcc
2.95.2 あるいはそれ以降)
を使用する必要があります。
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」 を参照してください。
RHEL4 は SELinux
と一緒に出荷され、プロセスのタイトなアクセスをサポートします。If
SELinux が有効になると
(/etc/selinux/config
の
SELINUX
が enforcing
に設定され、SELINUXTYPE
が
targeted
あるいは
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 を参照してください。
On Mac OS X、tar
は長いファイル名は扱えません。.tar.gz
ディストリビューションの解凍はが必要な場合は、gnutar
を参照してください。
MySQL は大きな問題なしに Mac OS X 10.x (Darwin) で動作する必要があります。
既知の問題:
高負荷でパフォーマンスに問題がある場合には、--skip-thread-priority
オプションを mysqld
に試してみてください。これによりすべてのスレッドを同じ優先度で実行します。On
Mac OS X、これは Apple
社が少なくともそのスレッド
スケジューラを修正すれば、優れたパフォーマンスを提供します。
接続回数
(wait_timeout
、interactive_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 をインストールする」 を参照してください。
現在の 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 をインストールする」 を参照してください。
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=v8plusa
を CFLAGS
および 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
バイナリを作成するには、-m64
を
CFLAGS
および CXXFLAGS
に追加して --enable-assembler
を
configure 行から削除します。
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=-lrt
を
configure
行に追加すると修正できます。
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
-mt
を CFLAGS
および
CXXFLAGS
追加して再コンパイルします。
gcc の SFW バージョン (Solaris 8
に同梱)
を使用する場合、/opt/sfw/lib
を環境変数 LD_LIBRARY_PATH
に
configure
を実行数r前に追加します。
gcc を sunfreeware.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
この問題は以下のメソッドのいずれかで回避できます。
zlib
をインストールせずに
-lz
にリンクする際
configure に問題がある場合、2
つのオプションがあります。
圧縮通信プロトコルを使用するには、zlib
を ftp.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
から取得できません。
通常、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
を実行した時に以下のエラーが表示された場合、configure
が curses.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/lib
を
LD_LIBRARY_PATH
に追加する。
リンクを libz.so
に
/lib
から追加する。
Solaris 8 を使用している場合、オプションの
zlib
を Solaris 8 CD
ディストリビューションからインストールできます。
MySQL をビルドするには
configure を
--with-named-z-libs=no
オプションで実行します。
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 参照。
この項では MySQL を異なる BSD Unix で使用する際の情報を提供します。.
スレッド
パッケージよく統合されているため、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_timeout
、interactive_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.confg
の
mysql
ユーザーの制限を上げそれを 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. 「環境変数」
参照。
NetBSD でコンパイルするには、GNU
make
が必要です。それがないと、ビルド
プロセスは make が
lint
を C++
ファイルで実行する際に失敗します。
OpenBSD 2.5 では、MySQL をネイティブのスレッドで以下のオプションを使用してコンパイルできます。
CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
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 のユーザー数社から bash と ulimit の問題が報告されています。
gcc
を使用している場合、--with-low-memory
フラグを configure に使用して
sql_yacc.cc
をコンパイルすることもできます。
MySQL
の現在の日付で問題がある場合には、TZ
変数の設定が役に立ちます。項2.14. 「環境変数」
参照。
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 のユーザー数社から
bash と ulimit
の問題が報告されています。
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_REALPATH
を config.h
から make
を実行する前に削除します。
これはデータベース ディレクトリをシンボリカルに別のデータベース ディレクトリにリンクできない、あるいはテーブルを別のデータベースにシンボリックにリンクできないことを意味します。(シンボリックに別のディスクにリンクすることはできます)。
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
標準の HP-UX ライブラリに深刻なバグが幾つかあるため、以下のパッチを MySQL を HP-UX 11.0 上で動作させる前にインストールします。
PHKL_22840 Streams cumulative PHNE_22397 ARPA cumulative
これにより EWOULDBLOCK
を
recv()
から EBADF
を
accept()
をスレッド化したアプリケーションで取得する問題を解決します。
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.h
を
mysql/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 のパッチレベルをチェックする必要があります。
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-exceptions
が gcc 2.95
に必要かは定かではありません。
アセンブラのコードで問題が発生した場合には、-mcpu=
オプションを CPU
に合うように変更してみてください。.一般的には
xxx
power2
、power
、あるいは
powerpc
が必要です。.604
あるいは
604e
が必要になる場合もあります。確かではありませんが
power
はほとんどの時間、power2
マシン上でも安全だと思われます。
どの CPU
を使用しているか分からない場合には、uname
-m
コマンドを実行します。それによって
000514676700
のような文字列を生成し、フォーマットはxxyyyyyymmss
で xx
および 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.h
を
configure
実行後に編集する必要性)
を使用したステップに似ています。しかし、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 *);
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
警告がでます。これらは無視して構いません。
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
コンパイル中の問題が発生し 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
オプションがコンパイル行にない場合は
-O0
を gcc
の直ぐ後に追加する)
に変更します。この変更を行った後、ディレクトリの上段に戻り
make を再度実行します。
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
現在のポートは
sco3.2v5.0.5
、sco3.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
gcc は ftp://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
データベースのサービス オプションを設定するには以下の手順に従います。アプリケーションが以下が必要かどうか分からない場合には、アプリケーションで提供された説明資料を参照してください。
root
としてログインします。
/etc/conf/sdevice.d/suds
ファイルを編集して SUDS
ドライバを有効にします。2
番目のファイルの N
を
Y
に変更します。
mkdev aio あるいは Hardware/Kernel マネージャを使用して非同期 I/O のサポートを有効にして kernel を再度リンクします。ユーザーがこの種の I/O にメモリを固定するには、aiomemlock(F) ファイルを更新します。このファイルを更新して AIO および固定する最大容量のメモリを使用するユーザー名を含めます。
多くのアプリケーションは単独のユーザーとして指定できるように 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
ファイルを変更します。例えば、SEMMS
を 200
に変更するには、このコマンドを
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
(ユーザー数による)
あるいはそれ以上に設定します。
弊社ではまた
SEMMSL
、SEMMNS
、および
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
を作成します。
./configure を
threads/src
ディレクトリで実行して SCO OpenServer
オプションを選択できます。このコマンドは
Makefile.SCO5
を
Makefile
にコピーします。次に
make を実行します。
デフォルトの /usr/include
ディレクトリにインストールするには、root
として、次に cd
から
thread/src
ディレクトリにログインして make
install を実行します。
MySQL をビルドするには GNU make を使用することを忘れないでください。
注:mysqld_safe
を root
として実行しなかった場合、デフォルトでプロセスごとに
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.o
が libgthreads.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
で再コンパイルする必要があります。.さもないと、InnoDB
は mysqld
の起動時にハングする場合があります。
SCO は OpenServer 5.0.x 用のオペレーティング システムのパッチを ftp://ftp.sco.com/pub/openserver5 で提供しています。
SCO は OpenServer 5.0.x
用のセキュリティの修正版および
libsocket.so.2
を
ftp://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 ファイル サイズの制限はありません。
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
ディストリビューションで
PRODUCT
が
pro-cert
のものは商業的にライセンス許諾した MySQL
プロ認定サーバです。ディストリビューションで
PRODUCT
が
pro-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 mysql
を root
ユーザーとして起動し新たにインストールした
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
(ユーザー数による) に設定します。
弊社ではまた
SEMMSL
、SEMMNS
、および
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%
に設定できますが、これは控え目な値です。
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
(ユーザー数による) に設定します。
弊社ではまた
SEMMSL
、SEMMNS
、および
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%
に設定できますが、これは控え目な値です。
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';
この項では直接的あるいは間接的に MySQL で使用されるすべての環境変数について説明します。これらの多くは本マニュアルの別の場所にもあります。
コマンドラインのいかなるオプションもオプション ファイルまたは環境変数で指定された値に優先し、オプション ファイルの値は環境変数の値に優先することにご留意ください。
多くの場合、オプション ファイルを環境変数の代わりに使用して MuSQL の振る舞いを変更するほうが好ましいといえます。項3.3.2. 「オプションファイルの使用」 参照。
変数 | 説明 |
CXX | C++ コンパイラ名 (configure 実行用)。 |
CC | C コンパイラ名 (configure 実行用)。 |
CFLAGS | C コンパイラ用フラグ (configure 実行用)。 |
CXXFLAGS | C コンパイラ用フラグ (configure 実行用)。 |
DBI_USER | Perl DBI のデフォルトユーザー名. |
DBI_TRACE | Perl DBI のトレース オプション |
HOME | mysql
履歴ファイルのデフォルトのパスは
$HOME/.mysql_history . |
LD_RUN_PATH | libmysqlclient.so
のロケーション指定に使用。 |
MYSQL_DEBUG | デバッグ中のデバッグ トレース オプション。 |
MYSQL_GROUP_SUFFIX | オプション グループの接尾辞の値
(--defaults-group-suffix
などの指定)。 |
MYSQL_HISTFILE | mysql
履歴ファイルへのパス。この変数を設定すると、その値は
$HOME/.mysql_history
のデフォルトをオーバーライドします。 |
MYSQL_HOME | サーバ特定の my.cnf
ファイルが常駐するディレクトリへのパス
(MySQL 5.0.3 として)。 |
MYSQL_HOST | mysql のコマンドライン クライアントが使用するデフォルトのホスト名 |
MYSQL_PS1 | mysql コマンドライン クライアントで使用するコマンド プロンプト |
MYSQL_PWD | mysqld に接続する際のデフォルトのパスワード。これを使用することはセキュアされていません。.項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 | ディレクトリを作成する際のユーザーディレクトリ作成マスク。これは
UMASK で AND ed
されます。 |
UMASK | ファイルを作成する際のユーザーファイル作成マスク。 |
USER | mysqld に接続する際に使用される Windows および NetWare 上のデフォルトのユーザー名 |
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 ベンチマークスィート」 参照。
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 ディストリビューションを解凍してビルドするには、以下のような手順に従います。
ディストリビューションを現在のディレクトリに解凍します。
shell> gunzip < DBI-VERSION
.tar.gz | tar xvf -
このコマンドが
DBI-
名のディレクトリを作成します。
VERSION
ロケーションを解凍したディストリビューションの上段のディレクトリに変更します。
shell> cd DBI-VERSION
ディストリビューションをビルドしてすべてをコンパイルします。
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
ヘッディング 「ローカルでインストールしたモジュールが必要な新しいモジュールのインストール」の下を見ます。
Windows 上で、MySQL の DBD
モジュールを ActiveState Perl
でインストールするには以下の手順に従います。
http://www.activestate.com/Products/ActivePerl/ から ActiveState Perl を入手してインストールします。
コンソール ウインドウ (「DOS window」) を開きます。
必要に応じて HTTP_proxy
変数を設定します。例えば、以下のような設定を試してみます。
set HTTP_proxy=my.proxy.com:3128
PPM プログラムの実行:
C:\> C:\perl\bin\ppm.pl
これまでインストールしたことがない場合、DBI
をインストールします。
ppm> install DBI
これが完了したら、以下のコマンドを実行します。
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";
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-xxx
の
Makefile
および各サブディレクトリを編集する必要があります。以下は
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 の出力は上記同様使用するコマンドを表しています。