Go to the first, previous, next, last section, table of contents.


4 MySQL のインストール

この章では、どのようにして MySQL を得、インストールするのかをのべます:

4.1 MySQL を得る方法

現在のバージョンとダウンロードの指示についての情報は MySQL ホームページ をチェックしてく ださい。

しかし、TcX のインターネット接続はそんなに速くありません; 下記に一覧され たミラーサイトの一つから実際にダウンロードすることをお勧めします

悪いまたは遅れているミラーは webmaster@mysql.com に報告してくださ い。

ヨーロッパ:

北アメリカ:

南アメリカ:

アジア:

オーストラリア:

アフリカ:

4.2 MySQL がサポートする OS

我々は GNU Autoconf を使用していますので、MySQL は POSIX スレッ ドと C++ コンパイラが動作する全ての新しいシステムに移植可能です。(クライ アントコードのコンパイルだけは C++ を必要としますが、スレッドは必要ではありません。) 我々は自身のソフトウェアを、最初に Sun Solaris (現在は 2.5 & 2.6 & 2.7) 上で、より 小さい範囲は RedHat Linux 5.0 上で、使用し開発します。

MySQL は次の OS/スレッドパッケージの組み合わせで、コンパイルの 成功が報告されています。多くの OS では、ネイティブスレッドは最新バージョ ンだけで動作することに注意してください。

4.3 使用する MySQL バージョン

make のための最初の決定は、あなたが最新の開発リリースを使用したいのか、 または最新の安定リリースを使用したいのかです。

make のための2番目の決定は、ソース配布とバイナリ配布のどちらを使用した いかです:

MySQL の命名法では、リリース番号は3つの数値とサフィックスからな ります。例えば、mysql-3.21.17-beta のようなリリース名は次のように 解釈されます:

MySQL の全てのバージョンは、比較的安全に使用できることを確かめ るため、我々の標準テストとベンチマークを通して実行されています。標準テス トは以前に見つかった全てのバグをチェックするように拡張されるため、テスト スイートはより良く保持されます。

全てのリリースは少なくても次のテストがされていることに注意してください:

内部テストスイート
これは顧客のための製品システムの一部です。多くのテーブルと何百というメガ バイトのデータを持っています。
MySQL ベンチマークスイート
これは一般的な範囲のクエリを実行します。これは、最適化の最新バッチが実際 にコードをより速く作れるかどうかを確認するテストでもあります。 「10.8 Using your own benchmarks」節参照。
crash-me テスト
これは、データベースがサポートしている機能と、その許容量と制限を決定しよ うとします。 「10.8 Using your own benchmarks」節参照。

他のテストは我々の内部製品環境で最新の MySQL バージョンを我々が 少なくとも1つのマシンで使用することです。我々は動作のため 100ギガバイト 以上のデータを持ちます。

4.4 アップデートがリリースされる方法と時

MySQL は TcX でかなり速く進化していて、我々はこれを他の MySQL ユーザに共有してもらいたいです。我々は、他の人が必要とし ていると思われるとても便利な機能を持った時に、リリースの作成を試みます。

我々は、実装が簡単な機能を要求するユーザの手助けも試みます。我々は、我々 のライセンスユーザが求めるものにも注目し、特に我々の拡張 email サポート 顧客が求めるものに注目して、彼らの手助けを試みます。

新しいリリースをダウンロードする必要はありません。News 節は、新しいリリー スが、あなたが本当に求める何かを持っているかどうかをあなたに教えます。 「D MySQL change history」節参照。

我々は MySQL の更新時には次のポリシーを使用します:

現在の安定リリースは 3.22 です; 我々はすでに 3.23 の開発に移行しています。 安定バージョンでもバグは まだ修正されます。バグ修正と ``行なわれるべき'' ことからも離れるような、 完全な凍結とは思っていません。``いくらか凍結'' は ``ほとんど確実に既に動 作しているものに影響しない'' 小さなことを追加するであろうことを意味しま す。

4.5 インストールレイアウト

この節では、バイナリとソース配布のインストールで生成されるディレクトリの デフォルトのレイアウトを説明します。

バイナリ配布はアンパックすることによりインストールされ、インストール場所 はあなたが選択した場所(通常 `/usr/local/mysql')の中の次のディレクト リを選択し生成します:

ディレクトリ ディレクトリの内容
`bin' クライアントプログラム, mysqld サーバ
`data' ログファイル, データベース
`include' Include (header) files
`lib' Libraries
`scripts' mysql_install_db
`share/mysql' エラーメッセージファイル
`sql-bench' ベンチマーク

ソース配布は configure しコンパイルした後にインストールされます。デフォ ルトではインストールステップは `/usr/local' 配下のファイルを次のサ ブディレクトリにインストールします:

ディレクトリ ディレクトリの内容
`bin' クライアントプログラムとスクリプト
`include/mysql' インクルードファイル
`info' Info 形式のドキュメント
`lib/mysql' Libraries
`libexec' mysqld サーバ
`share/mysql' エラーメッセージファイル
`sql-bench' ベンチマークと crash-me test
`var' データベースとログファイル

ソースインストールのレイアウトはバイナリインストールと次の点が異なります:

4.6 MySQL バイナリ配布のインストール

次にさらに詳細な説明を行ないます:

MySQL バイナリ配布をインストールするには、次のツールが必要です:

Linux では、代わりのインストール方法として RPM (RedHat Package Manager) を使用することができます。 「4.6.1 Linux RPM notes」節参照.

問題が起きたときは、mysql@lists.mysql.com に質問を投稿する時に mysqlbug常に使用してください。問題がバグでないとして も、mysqlbug はあなたの問題を解決する助けになるであろうシステム情 報を収集します。mysqlbug を使用しないと、あなたの問題の解決を得る 可能性が小さくなります! mysqlbug は、配布のアンパック後に `bin' ディレクトリ内に見つけられます。 「2.3 バグや問題を報告する方法」節参照.

MySQL バイナリ配布をインストールし、使用するために行なわなければならない 基本的なコマンド:

shell> gunzip < mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db
shell> bin/safe_mysqld &

Here follows a more detailed description:

バイナリ配布のインストールには、次のステップに従い、それから インストー ル後のセットアップとテストのために 「4.15 インストール後の設定とテスト」節 に進んでくだ さい。

  1. 配下に配布をアンパックしたいディレクトリを選んで、そこに移ってください。 以下の例では、`/usr/local' 配下に配布をアンパックし、MySQL をインストールするディレクトリ `/usr/local/mysql' を生成します。(し たがって、以下の指示は `/usr/local' にファイルを生成するパーミッショ ンを持っているとみなします。ディレクトリがプロテクトされている場合は、 root でインストールを行なう必要があります。)
  2. 配布ファイル 「4.1 MySQL を得る方法」節. にリストされたサイトの一つから得てください。 MySQL バイナリ配布は圧縮された tar アーカイブとして提供 され、`mysql-VERSION-OS.tar.gz' のような名前を持ちます。ここで VERSION は数値(例えば、3.21.15)で、OS は配布が意図 しているオペレーティングシステムの種類を表します(例えば pc-linux-gnu-i586)。
  3. 配布をアンパックし、インストールディレクトリを生成してください:
    shell> gunzip < mysql-VERSION-OS.tar.gz | tar xvf -
    shell> ln -s mysql-VERSION-OS mysql
    
    最初のコマンドは `mysql-VERSION-OS' という名前のディレクトリを生成 します。二番目のコマンドはそのディレクトリにシンボリックリンクを作成しま す。これはインストールディレクトリを `/usr/local/mysql' として、よ り簡単に参照させるためです。
  4. インストールディレクトリに移ってください:
    shell> cd mysql
    
    いくつかのファイルとサブディレクトリが mysql ディレクトリ中に見つ けられます。インストール目的の最も重要なものは `bin'`scripts' サブディレクトリです。
    `bin'
    このディレクトリはクライアントプログラムとサーバを含んでいます。シェルが MySQL プログラムを正しく見つけられるように、このディレクトリの フルパス名をあなたの PATH 環境変数に追加すべきです。
    `scripts'
    このディレクトリは mysql_install_db スクリプトを含んでいます。こ れはサーバアクセスパーミッションを初期化するために使用されます。
  5. mysqlaccess を使用し、かつ MySQL 配布を非標準の場所に持 ちたい場合は、mysqlaccessmysql クライアントを見つけよ うとする場所を変更する必要があります。`bin/mysqlaccess' スクリプト の 18 行目付近を編集してください。次のような行を探してください:
    $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
    
    パスを mysql が実際にシステム上におかれている場所を示すように変更 してください。これを行なわないと、mysqlaccess 実行時に broken pipe エラーになるでしょう。
  6. MySQL 許可テーブルを作成します (これは初めて MySQL をインストールするときだけ行います):
    shell> scripts/mysql_install_db
    
    3.22.10以前のバージョンの MySQL は、mysql_install_db. 実行時に MySQL を起動していましたが、もはやこれは起動しなくなりました
  7. Perl DBI/DBD インタフェースのサポートをインストールしたい 場合、 「4.10 Perl のインストールについて」節 を見てください。
  8. MySQL をマシン起動時に自動的に開始したい場合、 support-files/mysql.server をシステムのスタートアップファイルがある場所にコ ピーしてください。さらなる情報は support-files/mysql.server スクリプト自身 の中と、 「4.15.3 MySQL の自動起動と自動停止」節 に見つけられます。

全てがアンパックされてインストールされた後、配布の初期化とテストを行なう べきです。

MySQL サーバーは以下のコマンドで開始できます:

shell> bin/safe_mysqld &

4.15 インストール後の設定とテスト」節参照.

4.6.1 Linux RPM notes

(訳注:もし RedHat 以外の Linux を使用しており、.rpm を、自分が使用している パッケージ管理システムの管理下におきたい場合、alien : http://kitenet.net/programs/alien/ というツールを 使用します。これは RPM(Debian, Slackware) を自分が使用しているパッケージの形式に変換してくれます。 )

RPM を使用して MySQL をインストールすることを推奨します。 MySQL RPMS は RedHat 5.2 で作成していますが、 他の rpmglibc をサポートしている Linux でも動作するでしょう。

RPM file での問題, 例えば Sorry, the host 'xxxx' could not be looked up は、see 「4.6.3.1 Linux notes」節.

以下が使用するであろう RPM files です:

RPM パッケージに含まれるファイルをみるには:

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

インストールの最小の方法:

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

クライアントパッケージだけをインストール:

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

RPM はデータを `/var/lib/mysql' に保存します。 RPM は起動時にサーバーを立ちあげるように、`/etc/rc.d/' に登録します。 (This means that if you have performed a previous installation, you may want to make a copy of your previously-installed MySQL startup file if you made any changes to it, so you don't lose your changes.)

After installing the RPM file(s), the `mysqld' demon should be running and you should now be able to start using MySQL. 「4.15 インストール後の設定とテスト」節参照.

If something goes wrong, can find more information in the binary installation chapter. 「4.6 MySQL バイナリ配布のインストール」節参照.

4.6.2 クライアントプログラムのビルド

自分で書いたか、第三者が作成した MySQL クライアントプログラムをコンパイルする場合、 -lmysqlclient オプションを使用してリンクされなければなりません。 また -L オプションを指定して、ライブラリがどこにあるか指定する必要がある場合もあります。 例えばライブラリが `/usr/local/mysql/lib' にインストールされるならば、 リンクの時に -L/usr/local/mysql/lib -lmysqlclient と指定します。

MySQL ヘッダーファイルを使用するクライアントのために、 あなたがそれらをコンパイルする時には、-I オプションを指定しなければならない事もあります。 (例えば, -I/usr/local/mysql/include)

4.6.3 System 特有の問題

以下のセクションでは特定のシステム上に起こると認められたいくつかの問題のを示します。

4.6.3.1 Linux notes

TcX のバイナリリリースは -static でリンクされており、これはあなたのシステムが どのバージョンのライブラリーを使用しているか気にする必要がありません。 よって、LinuxThreads もこの場合必要ありません。 -static でリンクされたプログラムのサイズは ダイナミックリンクされたプログラムより大きくなりますが、少し(3-5%)速くなります。 しかし一つの問題として、このスタティックリンクされたプログラムでは、 ユーザー定義関数(UDF)が使用できないことです。 もし UDF を使用する(書く)場合(C, C++とかで)、自分自身で MySQL を ダイナミックリンクを使用してコンパイルしなくてはなりません。

もし glibc2 ではなく libc5 のシステムを使用しているなら、 このバイナリリリースではホスト名解決とgetpwnam()にいくつか問題が出ます。 (これは glibc がホスト名解決とgetwpent()にいくつかの外部ライブラリに 依存しているためで、たとえ -static リンクしても解決しません). この場合、mysql_install_db 実行時に以下のエラーが出るでしょう:

Sorry, the host 'xxxx' could not be looked up

あるいは、--user オプションで mysqld を起動しようとしたとき、 以下のエラーが出る場合:

getpwnam: No such file or directory

この問題は、以下のうちのどれかの方法で解決できます:

Linux-Intel binary と MySQL RPM リリースは、もっとも速くなるように 調整されています。我々はもっとも早く安定したコンパイラーを常に使用しています。

4.6.3.2 HP-UX notes

The binary distribution of MySQL for HP-UX is distributed as an HP depot file and as a tar file. To use the depot file you must be running at least HP-UX 10.x to have access to HP's software depot tools.

The HP version of MySQL was compiled on an HP 9000/8xx server under HP-UX 10.20, and uses MIT-pthreads. It is known to work well under this configuration. MySQL 3.22.26 and newer can also be built with HP's native thread package.

Other configurations that may work:

The following configurations almost definitely won't work:

To install the distribution, use one of the commands below, where /path/to/depot is the full path to the depot file:

The depot places binaries and libraries in `/opt/mysql' and data in `/var/opt/mysql'. The depot also creates the appropriate entries in `/sbin/init.d' and `/sbin/rc2.d' to start the server automatically at boot time. Obviously, this entails being root to install.

To install the HP-UX tar distribution, you must have a copy of GNU tar.

4.7 MySQL ソース配布のインストール

ソースから MySQL を作成しインストールするためには次のツールが必 要です:

問題が起きたときは、mysql@lists.mysql.com に質問を投稿する時に mysqlbug を常に使用してください。問題がバグでないとして も、mysqlbug はあなたの問題を解決する助けになるであろうシステム情 報を収集します。mysqlbug を使用しないと、あなたの問題の解決を得る 可能性が小さくなります! mysqlbug は、配布のアンパック後に `scripts' ディレクトリ内に見つけられます。 「2.3 バグや問題を報告する方法」節参照。

4.7.1 素早いインストールの概要

MySQL をソースからインストールするために行なわなければならない 基本的なコマンド(from an unpacked tar file):

shell> ./configure
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> /usr/local/mysql/bin/safe_mysqld &

RPM ソースから開始する場合は:

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

これはインストールできるRPMバイナリを作成します

もし DBIMsql-Mysql-modules Perl モジュールをインストールするなら、 bin/mysql_setpermission スクリプトが使用する新しいユーザーを 追加することができます。

次にさらに詳細な説明を行ないます:

ソース配布のインストールには、次のステップに従い、それから インストール 後の初期化とテストのために 「4.15 インストール後の設定とテスト」節参照 に進んでください。

  1. 配布をアンパックしたいディレクトリを選んで、そこに移ってください。
  2. 配布ファイルを 「4.1 MySQL を得る方法」節. にリストされたサイトの一つから得てください。 MySQL ソース配布は圧縮された tar アーカイブとして提供さ れ、`mysql-VERSION.tar.gz' のような名前を持ちます。ここで VERSION は 3.22.21 のような番号です。
  3. カレントディレクトリに配布をアンパックしてください:
    shell> gunzip < mysql-VERSION.tar.gz | tar xvf -
    
    このコマンドは `mysql-VERSION' という名前のディレクトリを作成します。
  4. アンパックされた配布のトップレベルディレクトリに移ってください:
    shell> cd mysql-VERSION
    
  5. リリースを configure し、全てをコンパイルしてください:
    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    
    configure の実行時、いくつかのオプションを指定できます。オプショ ンの一覧は ./configure --help を実行してください。 「4.7.3 典型的な configure オプション」節, さらに有用なオプションのいくつかに ついて議論しています。 configure が失敗して、援助を得るために mysql@lists.mysql.com にメー ルを送ろうとする場合、`config.log' から問題の解決の手助けにできると 考えられる行を含めてください。configure が異常終了する場合、 configure からの出力の最後の数行も含めてください。バグレポートは mysqlbug スクリプトを使用して投稿してください。 「2.3 バグや問題を報告する方法」節参照。 コンパイルが失敗する場合、いくらかのよくある問題での手助けのため、 「4.8 コンパイルの問題か?」節 を参照してください。
  6. 全てをインストールしてください:
    shell> make install
    
    このコマンドは root として実行する必要があります。
  7. MySQL 特権テーブルを生成してください(necessary only if you haven't installed MySQL before):
    shell> scripts/mysql_install_db
    
    注意: 3.22.10 より古い MySQL バージョンでは、 mysql_install_db 実行時に MySQL サーバが開始されましたが、 これはもはや真ではありません!
  8. Perl DBI/DBD インタフェースのサポートをインストールしたい 場合、 「4.10 Perl のインストールについて」節 を見てください。
  9. MySQL をマシン起動時に自動的に開始したい場合、 support-files/mysql.server をシステムのスタートアップファイルがあ る場所にコピーしてください。さらなる情報は support-files/mysql.server スクリプト自身の中と、 「4.15.3 MySQL の自動起動と自動停止」節 に見つけられます。

全てがインストールされた後、配布の初期化とテストを行なうべきです。

MySQL サーバーを以下のコマンドで開始できます。 BINDIRsafe_mysqld がインストールされているディレクトリ (`/usr/local/bin' by default) です:

shell> BINDIR/safe_mysqld &

コマンドがすぐに mysqld daemon ended エラーで失敗する場合、 `mysql-data-directory/'hostname'.err' ファイルになんらかの情報を 見つけることができます。 よくあることとして、すでに他の mysqld が 走っている場合などがあります。 「19.3 同一マシン上に複数の MySQL サーバーを走らせる」節参照.

4.15 インストール後の設定とテスト」節参照。

4.7.2 パッチの適用

時々、パッチは、メーリング・リストに流されたり、または MySQL FTPサイトの パッチエリア に置かれます。

メーリング・リストからのパッチを適用するには、パッチが載っているメッセージを ファイルに保存して、あなたの MySQL ソース・ツリーの 一番上のディレクトリーに移動し、以下のようにコマンドを実行します:

shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean

FTPサイトに置かれるパッチは、プレーンテキストファイルとして、 あるいは gzip で圧縮されたファイルとして頒布されます。 プレーンテキストのパッチの場合は、上に示したメーリングリストの パッチと同様に適用します。 圧縮されたパッチを適用するには、 MySQL ソース・ツリーの 一番上のディレクトリーに移動し、以下のようにコマンドを実行します:

shell> gunzip  < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean

それから通常のソースインストールの指示を ./configure ステップから 始めます。make install ステップ実行後、あなたの MySQL サー バを再起動します。

make install を実行する前に、現在走っているサーバーを止める必要があるかもしれません。 ( mysqladmin shutdown で止めます ) いくつかのシステムでは、現在実行しているものを止めない限り、 新しいバージョンをインストールできないようになっています。

4.7.3 典型的な configure オプション

configure スクリプトは MySQL 配布をどのようにコンフィグ するかを制御するための多くの処理を提供します。典型的には、 configure コマンドラインにオプションを使用してこれを行ないます。 いくつかの環境変数を使用しても configure に影響を与えることができ ます。configure がサポートするオプションの一覧は、次のコマンドを 実行してください:

shell> ./configure --help

良く使われる configure オプションのいくつか以下に説明します:

4.8 コンパイルの問題か?

Solaris 上で gcc を使用した場合、一切警告無く全ての MySQL プログラムがきれいに作れます。 他のシステムではインクルードファイルの違いから警告が出るかもしれません。 MIT-pthreads を使用した際の警告は 「4.9 MIT-pthreads に関して」節 を参照してください。 他の問題は、以下をチェックしてください。

多くの問題の解決のために、再 configure が必要です。 あなたが再構成する必要があるならば、以下に気をつけてください:

古いコンフィグやオブジェクトファイルの使用を防ぐため、 configure 前に以下のコマンドを実行してください:

shell> rm config.cache
shell> make clean

こうするかわりに、make distclean としても構いません。

以下に、 MySQL をコンパイルする際に起こりやすい問題をあげておきます:

4.9 MIT-pthreads に関して

このセクションではMIT-pthreadsを使っているさいに起こる問題についていくつか述べて います。

Linux では、MIT-pthreads を使用してはならず、 LinuxThreads をインストールするべきです! 「4.11.5 Linux notes (all Linux versions)」節参照.

もしあなたのシステムが本来のスレッドのサポートを提供しなければ、あなたは、 MIT-pthreadsパッケージを使って、MySQL を構築する必要があります。 これにはほとんどのFreeBSDシステム、SunOS4.x,Solaris 2.4とそれ以前、ほかいくつか が含まれます。 「4.2 MySQL がサポートする OS」節参照.

4.10 Perl のインストールについて

4.10.1 Unix への Perl のインストール

MySQL は Perl DBI/DBD インターフェースをサポートします。 「20.5 MySQL Perl API」節参照. DBI/DBD インターフェースの Perl のクライアントは、Perl 5.004 以上が必要です。 これより古いバージョンの Perl ですと動きません

MySQL Perl は、 MySQL クライアント・プログラミング・サポートが 既にインストールされていることが条件です。 もしあなたが RPM ファイルから MySQL をインストールしたのなら、 クライアント・プログラムは、クライアント RPM にあります。 が、 クライアント・プログラミング・サポートは、開発者向け RPM にあります。 開発者向け RPM をインストールしたことを確かめて下さい。

これらは 3.22.8 から MySQL 配布とは分けられて配布されています。 もし Perl モジュールをインストールしたいなら、http://www.mysql.com/Contrib を 確認してください。ここにおかれています。

Perl の配布物は tar でアーカイブされ、圧縮されています。 `MODULE-VERSION.tar.gz' という命名規則で配布されています。 (MODULE はモジュール名、VERSION はバージョン番号)

Data-Dumper, DBI, Msql-Mysql-modules が必要です。 これを取ってきたら、以下のようにしてインストールします。 Data-Dumper モジュールを例にしますが、他も同様にできます。

  1. 配布物をカレントディレクトリに展開:
    shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
    
    これは `Data-Dumper-VERSION' というディレクトリを作ります。
  2. 展開したディレクトリに入ります:
    shell> cd Data-Dumper-VERSION
    
  3. コンパイル、インストール:
    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

モジュールが動作するかを確かめるので make test コマンドは重要です。 インターフェースコードのテストのために Msql-Mysql-modules の インストール中にこれらのコマンドを実行する際には、 MySQL サーバーが稼働していなければなりません。 でなければ、テストは失敗します。

新しいリリースの MySQL をインストールした場合に常に Msql-Mysql-modules を再構築、再インストールすることは いい考えです。すべての DBI スクリプトが MySQL の アップグレード後にコアダンプする兆候に気づいた場合は、特に そうしてください。

もし Perl module を正しくシステムディレクトリーやローカルのPerlディレクトリ にインストールできない場合、以下の文献が役立ちます:

http://www.iserver.com/support/contrib/perl5/modules.html

このページの以下を参照してください: Installing New Modules that Require Locally Installed Modules.

4.10.2 Win32 への ActiveState Perl のインストール

Win32 上に、 ActiveState Perl に MySQL DBD モジュールを インストールするには、以下のようにしなくてはなりません:

もし上記のように出来なければ、代わりに MyODBC ドライバーを入れ、 MySQL サーバーに ODBC 経由で接続しなくてはなりません。

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") || 
  die "Got error $DBI::errstr when connecting to $dsn\n";

4.10.3 Win32 への MySQL Perl 配布物のインストール

MySQL Perl 配布は DBI, DBD:MySQL , DBD:ODBC を含みます。

4.10.4 Perl DBI/DBD 使用時の問題

もし Perl が ../mysql/mysql.so モジュールが見つからないとメッセージを出した場合、 シェアードライブラリ `libmysqlclient.so' を取りこめなかったと考えられます。

以下のような方法で解決方法があります:

もし DBD-mysql で以下のエラーが出た場合、 gcc (あるいは、gcc でコンパイルされた古いバイナリ) を使用していると 思われます:

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

`mysql.so' を作成する時のリンクコマンドに -L/usr/lib/gcc-lib/... -lgcc を追加してください。 (Perlクライアントを作る際の make の出力をチェックしてください) -L オプションに指定するのは、あなたのシステム内の `libgcc.a' があるディレクトリです。

Perl と MySQLgcc を使用して作られていない場合も原因としてあります。 この場合、両方を gcc でコンパイルすることにより、ミスマッチを避けることができます。

ダイナミックリンクをサポートしていないシステム(like SCO)でPerlモジュールを使用したい場合、 DBIDBD-mysql を含むスタティックのPerlを作る事もできます。 これは、まず、 DBI コードがリンクされているPerlを作って現在のPerlの上にインストールします。 そして、 DBD コードをさらにリンクさせるPerlを作り、それをインストールします。

SCOでは、環境変数を以下のようにしなくてはなりません:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
or
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:

最初、DBI をスタティックリンクしたPerlを作るために、 `perl/DBI' ディレクトリで以下のように実行します:

shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl

この後、あなたは新しいPerlをインストールしなければなりません。 make perl をすると、インストール操作に実行するに必要な make コマンドを 表示します。 SCOでは、make -f Makefile.aperl inst_perl MAP_TARGET=perl とします。

次に、DBD::mysql をスタティックリンクしたPerlを作るために、 `perl/Mysql-modules' ディレクトリで以下のように実行します:

shell> perl Makefile.PL LINKTYPE=static
shell> make
shell> make install
shell> make perl

これも新しいPerlをインストールしなくてはなりません。 make perl の出力は使用するコマンドを示します。

4.11 System-specific issue

以下のセクションは、ソース配布から MySQL をインストールする際に 特定のシステム上に起こると認められた問題のいくつかを示します.

4.11.1 Solaris notes

ソラリスでは MySQL ソースを展開するときトラブルが出るでしょう! ソラリスの tar は長い名前を扱えず、 MySQL を展開する場合、 以下のようなエラーになります:

x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
tar: directory checksum error

この場合、GNU tar (gtar) を展開に使用してください。 コンパイルずみのものが以下にあります: http://www.mysql.com/Downloads/.

Sun ネイティブスレッドは Solaris 2.5 以上で動きます。 2.4 以下の場合、MySQL は時動的に MIT-pthreads を使用します 「4.9 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 を使用しているなら、 egcs 1.1.2 以上を推奨します。 これは http://egcs.cygnus.com/. で見つけれます。 egs 1.1.1 と gcc 2.8.1 は SPARC 上では完全に動作しないことに注意!

egcs 1.1.2 を使用した、推奨する configure は:

shell> CC=gcc CFLAGS="-O6" \
       CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" \
       ./configure --prefix=/usr/local/mysql --with-low-memory

もし Sun Workshop 4.2 compiler を使用するなら、configure を以下のようにします:

CC=cc CFLAGS="-xstrconst -Xa -xO4 -native -mt" CXX=CC CXXFLAGS="-xO4 -native -noex -mt" ./configure --prefix=/usr/local/mysql

shell> CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" \
       CXX=CC CXXFLAGS="-noex -XO4 -mt" \
       ./configure

configure スクリプトの次の行を:

#if !defined(__STDC__) || __STDC__ != 1

以下に変えます:

#if !defined(__STDC__)

もし -Xc オプションで __STDC__ を有効にした場合、 Sun compiler は Solaris の `pthread.h' ヘッダーファイルを使用して コンパイルすることができません。 これはサンのバグです(インクルードファイルかコンパイラーのバグ)

もし mysqld を起動時に以下のエラーが出た場合、 マルチスレッドを外して(オプション -mt を指定) Sun compiler を使って MySQL をコンパイルし直してください:

libc internal error: _rmutex_unlock: rmutex not held

-mtCFLAGSCXXFLAGS に加えます。

gccMySQL をコンパイルするときに以下のエラーが出た場合、 これは 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'

この場合、新しい egcsgcc でコンパイルします! 少なくとも Solaris 2.5 では、ほとんどの gcc のバイナリのバージョンが古く、 スレッドを使用するプログラムにはこのインクルードファイルは使えません!

Solaris は スタテックリンクのシステムライブラリーを用意していません (libpthreads and libdl)。 そのため、--static オプションで MySQL をコンパイルできません。 もしこれを試みた場合、以下のエラーになります:

ld: fatal: library -ldl: not found

もし多くのプロセスが速く mysqld に接続を試みた場合、 MySQL ログに以下のようにエラーが出ます:

Error in accept: Protocol error

サーバーを --set-variable back_log=50 オプションで起動すれば、この問題に対処できるでしょう。

もし自分の MySQL クライアントプログラムをリンクして 実行時に以下のようにエラーが出た場合:

ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory

これは以下のどれかで回避できます:

*
以下のフラグでクライアントをリンクします(-Lpath の代わりに): -Wl,r/full-path-to-libmysqlclient.so
*
libmysqclient.so`/usr/lib' にコピーします
*
LD_RUN_PATH 環境変数を `libmysqlclient.so' が存在するところに セットした後、クライアントを実行します。

4.11.2 Solaris 2.7 notes

通常、Solaris 2.6 のバイナリは Solaris 2.7 で使用できます。 ほとんどの Solaris 2.6 の問題も Solaris 2.7 に適用できます。

Solaris 2.7 は、インクルードファイルにいくつかバグがあります。 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 `;'

これを解決するには、以下のうち一つを行います:

4.11.3 Solarix x86 notes

gccegcs を Solaris x86 で使用した場合、load 時にコアダンプする場合、 以下のように configure します:

shell> CC=gcc CFLAGS="-O6 -fomit-frame-pointer" \
       CXX=gcc \
       CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
       ./configure --prefix=/usr/local/mysql

これは libstdc++ ライブラリーと C++ の問題を回避します。

もしこれが該当しない場合、デバッグモードでコンパイルして デバッグのトレースファイルを書き出すようにして起動するか、 gdb を使用して起動してください。 「G.1 MySQL server のデバッグ」節参照.

4.11.4 SunOS 4 notes

SunOS 4 では MIT-pthreads が必要です。 このために、 GNU makeMySQL のコンパイルに必要になります。

いくつかの SunOS 4 では dynamic libraries と libtool に問題があります。 これを避けるために、以下のようにして configure します:

shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static

readline のコンパイル時、二重定義のワーニングが出ますが、 これは無視して構いません。

mysqld をコンパイルする時、 いくつか implicit declaration of function ワーニングがでますが、 無視して構いません。

4.11.5 Linux notes (all Linux versions)

Linux では MySQL は LinuxThreads を使用します。 もし glibc2 を持たない古い Linux を使用している場合、 MySQL のコンパイルの前に、 LinuxThreads をインストールしなければなりません。 http://www.mysql.com/Downloads/Linux

もし mysqld が動かなかったり、 mysql_install_db が動かない場合、 以下を読みすすめてください! LinuxThreads か libc/glibc ライブラリーに問題のある Linux システムだけに起こります。 しかし MySQL を動かせるために簡単な方法が多くあります。 一番簡単な方法は、バイナリになった MySQL (not the RPM) を使用することです; このバージョンのバイナリは、あなた自身がコンパイルしたものより 10% ほど速いでしょう! 「10.2.1 MySQL の速度に影響するコンパイルとリンク方法」節参照.

一つ知られている問題として、バイナリ配布を libc5 の古い Linux システム (RedHat 4.x , Slackware 3.6以下, Debian 1.3 bo 以下など) で使用すると、ホスト名解決の致命的なエラーが出ます 「4.6.3.1 Linux notes」節参照.

myisamchklibc.so.5.3.12 で使用するとハングります. 最新の libc にアップグレードしてください。

LinuxThreads を使用している場合、最低3つのプロセスが走ります。 これらは実スレッドで、一つは LinuxThreads マネージャーのために、 一つは接続のハンドルに、もうひとつはアラームとシグナルのハンドルです。

もし mysqld デーモンプロセスが ps などでみると死んでいるようであれば, 通常これは MySQL バグか、壊れたテーブルを持っています。 「18.0.1 MySQL がクラッシュする場合に行うこと」節参照.

LinuxThreads を使用していて mysqladmin shutdown が動かない場合、 LinuxThreads 0.7.1 以上にアップグレードしてください。

RedHat を使用していて, 以下のようなエラーが出た場合:

/usr/bin/perl is needed...
/usr/sh is needed...
/usr/sh is needed...

この場合、 rpm のバージョンを `rpm-2.4.11-1.i386.rpm'`rpm-devel-2.4.11-1.i386.rpm' (以上) にしなくてはいけません。

RedHat 4.2 は以下からアップグレードが入手できます。 ftp://ftp.redhat.com/updates/4.2/i386. あるいは他の場合は http://www.sunsite.unc.edu/pub/Linux/distributions/redhat/code/rpm/

もし MySQL クライアントを実行して以下のエラーになった場合:

ld.so.1: ./my: fatal: libmysqlclient.so.4: open failed: No such file or directory

以下の方法で解決できます:

If you are using the Fujitsu compiler (fcc / FCC) you will have some problems compiling MySQL because the Linux header files are very gcc oriented.

The following configure line should work with 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

4.11.5.1 Linux-x86 notes

MySQLlibc 5.4.12 以上が必要です。libc 5.4.46 で動作します。 glibc 2.0.6 以上でも動作します。 glibc の RPM にはいくつか問題があり、アップデートをチェックしてください。 glibc 2.0.7-19 と 2.0.7-29 RPM で動作します。

古い 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.

これは _P マクロが一つのアンダースコアしかもてないためで、 このエラーメッセージのように対処してください。

以下のようなワーニングは無視して構いません:

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'

Debian GNU/Linux では、MySQL をマシンの起動時に立ちあげるためには、 以下のようにします:

shell> cp support-files/mysql.server /etc/init.d/mysql.server
shell> /usr/sbin/update-rc.d mysql.server defaults 99

mysql.server スクリプトは MySQL をインストールした先の `share/mysql' directory にあります。 あるいは、 MySQL のソースの中の `support-files' ディレクトリにあります。

mysqld がつねにスタート時にコアをはく場合、 古い `/lib/libc.a' を使用しているかもしれません。 `sql/mysqld' を消去して、新しく make install してみてください。 これはいくつかの Slackware で報告された現象です。 RedHat 5.0 は glibc のバージョンによって問題が発生します。 「4.11.5.2 RedHat 5.0 notes」節参照.

もし mysqld をリンクする場合に以下のようなエラーが出た場合、 `libg++.a' が正しくインストールされていません:

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'

`libg++.a' の使用を避けるには、 configure を以下のようにします:

shell> CXX=gcc ./configure

4.11.5.2 RedHat 5.0 notes

もし RedHat で MySQL に問題がある場合、まず glibc のバージョンを新しいものにあげてください!

RedHat のオフィシャルパッチ(including glibc-2.0.7-19 and glibc-devel-2.0.7-19) をインストールしているなら、 MySQL は問題なく動くはずです!

glibc 2.0.5 には pthread_key_create 変数を解放する部分にバグがあり、 アップデートが必要です。glibc 2.0.5 を使用する場合、 スタティックリンクされて作成された MySQL バイナリ配布物を使用すべきです。 ソースからコンパイルしたい場合、 http://www.mysql.com/Downloads/Linux にある LinuxThreads の修正版をインストールするか、 あるいは glibc をバージョンアップしなくてはなりません。

もし glibc or LinuxThreads のバージョンが問題のあるものだと、 mysqld はコネクションの度にクラッシュします。 例えば、mysqladmin versionmysqld を完全にクラッシュします!

また、問題のあるライブラリーを使用していると、 mysqld は起動時にクラッシュします。 いくつかの Linux systems では、以下のようにして configure でこれを避けることができます:

shell> ./configure --with-mysqld-ldflags=-all-static

RedHat 5.0 では、glibc 2.0.7-19 RPM を簡単にインストールできますので、 インストール後、--with-mysqld-ldflags=-all-static なしで configure できます。

glibc 2.0.7 のソースに対するパッチは

http://www.mysql.com/Download/Linux/glibc-2.0.7-total-patch.tar.gz

にあります。 このパッチは MySQL がテストされたパッチで、簡単に適用できます。

もし MySQL 構築時にクラッシュする場合、新しい MySQL の バイナリをダウンロードしてみてください。これはスタティックリンクで作成されており、 ライブラリーの衝突を避けることができ、全ての Linux で動くはずです!

MySQL はデバッグのためトレースファイルに情報を書き出すことができます。 これは問題を解決するためにヒントになる情報を多く出力します。 「G.1 MySQL server のデバッグ」節参照.

4.11.5.3 RedHat 5.1 notes

RedHat 5.1 の glibc (glibc 2.0.7-13) はメモリーリークします。 glibc を 2.0.7-19 にアップグレードしなくてはなりません。 あるいは、バイナリ配布の mysqld を使用するかです。 もしこれを行わなかった場合、メモリー関連の問題が発生します(out of memory, etc.,etc.)。 多くの場合以下のように:

Can't create a new thread (errno 11). If you are not out of available
memory, you can consult the manual for any possible OS dependent bug

glibc 2.0.7-19 にアップグレード後は、MySQL を ダイナミックリンク指定(デフォルト)で configure できます。 が、glibc 2.0.7-19 をソースからインストールしない限り、 --with-mysqld-ldflags=-all-static オプションは configure使用できません

glibc のバージョンは rpm -q glibc で確認できます。

4.11.5.4 Linux-SPARC notes

いくつかの埋め込み関数, readdir_r() が壊れます。 この顕れとして、SHOW DATABASES が常に空を返します。 これは configure 後、コンパイルする前に、 `config.h' から HAVE_READDIR_R を取り除くことで解決します。

その他いくつかの問題は、あなたの Linux にパッチを当てる必要があります。 パッチは http://www.mysql.com/patches/Linux-sparc-2.0.30.diff にあります。 このパッチは、vger.rutgers.edu にある `sparclinux-2.0.30.tar.gz' 用です。 (これは正式の 2.0.30 とは違います。パッチを正式2.0.30に当てないように) そして LinuxThreads 0.6 かそれ以上にしなくてはなりません。

これは jacques@solucorp.qc.ca から寄せられました。

4.11.5.5 Linux-Alpha notes

Linux-Alpha での一番大きな問題は、このプラットフォームの glibc に まだいくつか問題があることです。 最新の glibc を得ることから はじめてください。

スレッドを使用するプログラム( mysqld, thr_alarm, thr_lock など ) を実行する前に、共有メモリの limit 値を上げるべきです(ulimit を使用して)。 MySQL ベンチマークは、あなたがこれを忘れた場合、失敗することが知られています!

MySQL は以下に示すようにコンフィギュアーします:

shell> CC=gcc CCFLAGS="-Dalpha_linux_port" \
       CXX=gcc CXXFLAGS="-O3 -Dalpha_linux_port -felide-constructors -fno-exceptions -fno-rtti" \
       ./configure --prefix=/usr/local/mysql
  • mysys/thr_lockmysys/thr_alarm をコンパイルします。 これらを使用してテストします。これらのプログラムにに引数はいりません。 もし OK なら、 test_succeeded メッセージが出るはずです。 MySQL のインストール後、safe_mysqld 中の ulimit を アンコメントし、共有メモリーを増やします。 Linux-Alpha は MySQL にとって独特なプラットフォームです。 RedHat 5.0 と パッチを当てた LinuxThreads は、これを動かすためにはちょうどよい機会です。 もしシグナルで問題がある場合 (MySQL dies unexpectedly under high load)、これは OS とスレッドのバグでしょう。 この場合、MySQL をシグナルを使用しないように、configure 時に指定できます:
    shell> CFLAGS=-DDONT_USE_THR_ALARM \
           CXXFLAGS=-DDONT_USE_THR_ALARM \
           ./configure ...
    
    これは MySQL のパフォーマンスに影響しませんが、 mysqladmin kill or mysqladmin shutdown を使用して、 接続が ``sleeping'' になっているクライアントを kill できません。 次のコマンドを発行したとき、そのクライアントは死にます。

    4.11.5.6 MkLinux notes

    MySQL は最新の glibc を使用した MkLinux で動作します。 (glibc 2.0.7 でテストしました).

    4.11.5.7 Qube2 Linux notes

    Qube2 (Linux Mips) 上で MySQL を動作させるには、 最新の glibc ライブラリでなくてはなりません(glibc-2.0.7-29C2 は動作することが分かっています)。 そして、 egcs C++ compiler (egcs-1.0.2-9 以上) を使用しなくてはなりません。

    4.11.6 Alpha-DEC-Unix notes

    When compiling threaded programs under Digital UNIX, the documentation recommends the -pthread option for cc and cxx and the libraries -lmach -lexc (in addition to -lpthread). You should run configure something like this:

    shell> CC="cc -pthread" CXX="cxx -pthread -O" \
           ./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"
    

    When compiling mysqld, you may see a couple of warnings like this:

    mysqld.cc: In function void handle_connections()':
    mysqld.cc:626: passing long unsigned int *' as argument 3 of
    accept(int,sockadddr *, int *)'
    

    You can safely ignore these warnings. They occur because configure can't detect warnings, only errors.

    If you start the server directly from the command line, you may have problems with it dying when you log out. (When you log out, your outstanding processes receive a SIGHUP signal.) If so, try starting the server like this:

    shell> nohup mysqld [options] &
    

    nohup causes the command following it to ignore any SIGHUP signal sent from the terminal. Alternatively, start the server by running safe_mysqld, which invokes mysqld using nohup for you.

    4.11.7 Alpha-DEC-OSF1 notes

    If you have problems compiling and have DEC CC and gcc installed, try running configure like this:

    shell> CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
           ./configure --prefix=/usr/local/mysql
    

    If you get problems with the `c_asm.h' file, you can create and use a 'dummy' `c_asm.h' file with:

    shell> touch include/c_asm.h
    shell> CC=gcc CFLAGS=-I./include \
           CXX=gcc CXXFLAGS=-O3 \
           ./configure --prefix=/usr/local/mysql
    

    On OSF1 V4.0D and compiler "DEC C V5.6-071 on Digital UNIX V4.0 (Rev. 878)" the compiler had some strange behavior (undefined asm symbols). /bin/ld also appears to be broken (problems with _exit undefined errors occuring while linking mysqld). On this system, we have managed to compile MySQL with the following configure line, after replacing /bin/ld with the version from OSF 4.0C:

    shell> 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
    export CC CFLAGS CXX CXXFLAGS
    ./configure --prefix=/usr/mysql/mysql --with-low-memory --enable-large-files --with-mysqld-ldflags=-all-static --disable-shared --with-named-thread-libs="-lmach -lexc -lc"
    

    In some versions of OSF1, the alloca() function is broken. Fix this by removing the line in `config.h' that defines 'HAVE_ALLOCA'.

    The alloca() function also may have an incorrect prototype in /usr/include/alloca.h. This warning resulting from this can be ignored.

    configure will use the following thread libraries automatically: --with-named-thread-libs="-lpthread -lmach -lexc -lc".

    When using gcc, you can also try running configure like this:

    shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....
    

    If you have problems with signals (MySQL dies unexpectedly under high load) you may have found an OS bug with threads and signals. In this case you can tell MySQL not to use signals by configuring with:

    shell> CFLAGS=-DDONT_USE_THR_ALARM \
           CXXFLAGS=-DDONT_USE_THR_ALARM \
           ./configure ...
    

    This doesn't affect the performance of MySQL, but has the side effect that you can't kill clients that are ``sleeping'' on a connection with mysqladmin kill or mysqladmin shutdown. Instead, the client will die when it issues its next command.

    4.11.8 SGI-IRIX notes

    You may have to undefine some things in `config.h' after running configure and before compiling.

    In some Irix implementations, the alloca() function is broken. If the mysqld server dies on some SELECT statements, remove the lines from `config.h' that define HAVE_ALLOC and HAVE_ALLOCA_H. If mysqladmin create doesn't work, remove the line from `config.h' that defines HAVE_READDIR_R. You may have to remove the HAVE_TERM_H line as well.

    SGI recommends that you install all of the patches on this page as a set: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html

    At the very minimum, you should install the latest kernel rollup, the latest rld rollup, and the latest libc rollup.

    You definately need all the POSIX patches on this page, for pthreads support:

    http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

    If you get the something like the following error when compiling `mysql.cc':

    "/usr/include/curses.h", line 82: error(1084): invalid combination of type
    

    Then type the following in the top-level directory of your MySQL source tree:

    shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
    shell> make
    

    There have also been reports of scheduling problems. If only one thread is running, things go slow. Avoid this by starting another client. This may lead to a 2-to-10-fold increase in execution speed thereafter for the other thread. This is a poorly-understood problem with Irix threads; you may have to improvise to find solutions until this can be fixed.

    If you are compiling with gcc, you can use the following configure command:

    shell> CC=gcc CXX=gcc CXXFLAGS=-O3 \
           ./configure --prefix=/usr/local/mysql --with-thread-safe-client --with-named-thread-libs=-lpthread
    

    4.11.9 FreeBSD notes

    FreeBSD 3.x is recommended for running MySQL since it the thread package is much more integrated.

    最も簡単にインストールする方法は、http://www.freebsd.org の mysql-server と mysql-client の ports を利用することです。 http://www.freebsd.org

    これは以下のような利点をもたらします:

    FreeBSD 2.x 上では MIT-pthreads を、そして versions 3 以上では、 ネイティブのスレッドを使用してください。 最近のいくつかの 2.2.x ではネイティブのスレッド で動作が可能ですが、 mysqld を 落とすときに問題が起こります。

    名前解決の設定を確実にしておいてください。 でないと、mysqld に接続する際、 名前解決にとても時間がかかり、接続に失敗するでしょう。

    確実に `/etc/hosts' ファイルに localhost が登録されているように してください。 (でないと、データベースへの接続で問題が出ます)。 `/etc/hosts' ファイルは、以下の行から始まるべきです:

    127.0.0.1       localhost localhost.your.domain
    

    もし configure が MIT-pthread を使用すると分かった場合、 MIT-pthreads notes を読むべきです。 「4.9 MIT-pthreads に関して」節参照.

    If you get an error from make install that it can't find `/usr/include/pthreads', configure didn't detect that you need MIT-pthreads. This is fixed by executing these commands:

    shell> rm config.cache
    shell> ./configure --with-mit-threads
    

    FreeBSD の make の振る舞いは GNU の make と少し違います。 もし make にかかわる問題が出たなら、 GNU make を インストールすべきです。

    FreeBSD では、デフォルトのファイルハンドルの上限値がとても少ない 値であることも知られています。 「18.10 File not found」節参照. safe_mysqld 中の ulimit -n のコメントを外すか、/etc/login.conf ファイルで mysqld ユーザーの制限値を増加させます。 (/etc/login.conf の変更の際は cap_mkdb /etc/login.conf で再構築が必要です)。 もしデフォルトを使用したくなければ、このユーザーに password ファイル中で 適切な Class を与えることでも、変更可能になります。(use: chpass mysqld-user-name)

    もし SELECT NOW() の値が あなたのローカル時間ではなく GMT で返ってくるなら、 TZ 環境変数を設定しなくてはなりません。 これはサーバー実行時の 環境変数にすべきで、safe_mysqldmysql.server ファイルに 記述しておきます。

    安全で安定したシステムを入れるなら、 -STABLE のカーネルだけを 使用してください。

    4.11.10 NetBSD notes

    To compile on NetBSD you need GNU make. Otherwise the compile will crash when make tries to run lint on C++ files.

    4.11.11 OpenBSD 2.5 notes

    On OpenBSD 2.5, you can compile MySQL with native threads with the following options:

    CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
    

    4.11.12 BSD/OS notes

    4.11.12.1 BSD/OS 2.x notes

    If you get the following error when compiling MySQL, your ulimit value for virtual memory is too low:

    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
    

    Try using ulimit -v 80000 and run make again. If this doesn't work and you are using bash, try switching to csh or sh; some BSDI users have reported problems with bash and ulimit.

    If you are using gcc, you may also use have to use the --with-low-memory flag for configure to be able to compile `sql_yacc.cc'.

    If you have a problem with SELECT NOW() returning values in GMT and not your local time, you have to set the TZ environment variable to your current timezone. This should be done for the environment in which the server runs, for example in safe_mysqld or mysql.server.

    4.11.12.2 BSD/OS 3.x notes

    Upgrade to BSD/OS 3.1. If that is not possible, install BSDIpatch M300-038.

    Use the following command when configuring MySQL:

    shell> env CXX=shlicc++ CC=shlicc2 \
           ./configure \
               --prefix=/usr/local/mysql \
               --localstatedir=/var/mysql \
               --without-perl \
               --with-unix-socket-path=/var/mysql/mysql.sock
    

    The following is also known to work:

    shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 \
           ./configure \
               --prefix=/usr/local/mysql \
               --with-unix-socket-path=/var/mysql/mysql.sock
    

    You can change the directory locations if you wish, or just use the defaults by not specifying any locations.

    If you have problems with performance under heavy load, try using the --skip-thread-priority option to safe_mysqld! This will run all threads with the same priority; on BSDI 3.1, this gives better performance (at least until BSDI fixes their thread scheduler).

    If you get the error virtual memory exhausted while compiling, you should try using ulimit -v 80000 and run make again. If this doesn't work and you are using bash, try switching to csh or sh; some BSDI users have reported problems with bash and ulimit.

    4.11.12.3 BSD/OS 4.x notes

    BSDI 4.x has some thread related bugs. If you want to use MySQL on this, you should install all thread related patches. At least M400-023 should be installed.

    4.11.13 SCO notes

    The current port is tested only on a ``sco3.2v5.0.4'' and ``sco3.2v5.0.5'' system. There has also been a lot of progress on a port to ``sco 3.2v4.2''.

    For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this you should be able to compile MySQL with just:

    CC=gcc CXX=gcc ./configure ... (options)
    
    1. For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c). This is necessary because GNU gcc 2.7.2 in Skunkware 97 does not have GNU as. You can also use egcs 1.1.2 or newer http://www.egcs.com/. If you are using egcs 1.1.2 you have to execute the following command:
      shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
      
    2. You need the port of GCC 2.5.? for this product and the Development system. They are required on this version of SCO UNIX. You cannot just use the GCC Dev system.
    3. You should get the FSU Pthreads package and install it first. This can be found at http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz. You can also get a precompiled package from ftp://www.mysql.com/pub/mysql/Downloads/SCO/FSU-threads-3.5c.tar.gz.
    4. FSU Pthreads can be compiled with SCO UNIX 4.2 with tcpip. Or OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO Development System installed using a good port of GCC 2.5.X ODT or OS 3.0 you will need a good port of GCC 2.5.? There are a lot of problems without a good port. The port for this product requires the SCO UNIX Development system. Without it, you are missing the libraries and the linker that is needed.
    5. To build FSU Pthreads on your system, do the following:
      1. Run ./configure in the `threads/src' directory and select the SCO OpenServer option. This command copies `Makefile.SCO5' to `Makefile'.
      2. Run make.
      3. To install in the default `/usr/include' directory, login as root, then cd to the `thread/src' directory, and run make install.
    6. Remember to use GNU make when making MySQL.
    7. On OSR 5.0.5, you should use the following configure line:
      shell> CC="gcc -DSCO" CXX="gcc -DSCO" ./configure
      
      The -DSCO is needed to help configure detect some thread functions properly. If you forget -DSCO, you will get the following error message while compiling:
      my_pthread.c: In function `my_pthread_mutex_init':
      my_pthread.c:374: `pthread_mutexattr_default' undeclared (first use this function)
      
    8. If you don't start safe_mysqld as root, you probably will get only the default 110 open files per process. mysqld will write a note about this in the log file.
    9. With SCO 3.2V5.0.5, you should use a FSU Pthreads version 3.5c or newer. The following configure command should work:
      shell> CC="gcc -belf" ./configure --prefix=/usr/local/mysql --disable-shared
      
    10. With SCO 3.2V4.2, you should use a FSU Pthreads version 3.5c or newer. The following configure command should work:
      shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
             ./configure \
                 --with-debug --prefix=/usr/local/mysql \
                 --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
                 --with-named-curses-libs="-lcurses"
      
      You may get some problems with some include files. In this case, you can find new SCO-specific include files at ftp://www.mysql.com/pub/mysql/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz. You should unpack this file in the `include' directory of your MySQL source tree.

    SCO development notes:

    If you want to install DBI on SCO, you have to edit the `Makefiles' in DBI-xxx and each subdirectory:

    OLD:                                  NEW:
    CC = cc                               CC = gcc -belf
    CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
    CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =
    
    LD = ld                               LD = gcc -belf -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 -belf -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
    

    This is because the Perl dynaloader will not load the DBI modules if they were compiled with icc or cc.

    Perl works best when compiled with cc.

    4.11.14 SCO Unixware 7.0 notes

    You must use a version of MySQL at least as recent as 3.22.13, since that version fixes some portability problems under Unixware.

    We have been able to compile MySQL with the following configure command on UnixWare 7.0.1:

    shell> CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
    

    4.11.15 IBM-AIX notes

    Automatic detection of xlC is missing from Autoconf, so a configure command something like this is needed when using the IBM compiler:

    shell> CC="xlc_r -ma -O3 -qstrict -DHAVE_INT_8_16_32" \
           CXX="xlC_r -ma -O3 -qstrict -DHAVE_INT_8_16_32" \
           ./configure
    

    If you are using egcs to compile MySQL, you MUST use the -fno-exceptions flag, as the exception handling in egcs is not thread-safe! (This is tested with egcs 1.1.) We recommend the following configure line with egcs and gcc on AIX:

    shell> CXX=gcc \
           CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
           ./configure --prefix=/home/monty --with-debug --with-low-memory
    

    If you have problems with signals (MySQL dies unexpectedly under high load) you may have found an OS bug with threads and signals. In this case you can tell MySQL not to use signals by configuring with:

    shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
           CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -DDONT_USE_THR_ALARM" \
           ./configure --prefix=/home/monty --with-debug --with-low-memory
    

    This doesn't affect the performance of MySQL, but has the side effect that you can't kill clients that are ``sleeping'' on a connection with mysqladmin kill or mysqladmin shutdown. Instead, the client will die when it issues its next command.

    4.11.16 HP-UX notes

    There are a couple of ``small'' problems when compiling MySQL on HP-UX. We recommend that you use gcc instead of the HP-UX native compiler, because gcc produces better code!

    We recommend one to use gcc 2.95 on HP-UX. Don't use high optimization flags (like -O6) as this may not be safe on HP-UX.

    Note that MIT-pthreads can't be compiled with the HP-UX compiler, because it can't compile .S (assembler) files.

    The following configure line should work:

    CFLAGS="-DHPUX -I/opt/dce/include" CXXFLAGS="-DHPUX -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
    

    If you are compiling gcc 2.95 yourself, you should NOT link it with the DCE libraries (libdce.a or libcma.a) if you want to compile MySQL with MIT-pthreads. If you mix the DCE and MIT-pthreads packages you will get a mysqld to which you cannot connect. Remove the DCE libraries while you compile gcc 2.95!

    4.11.17 MacOS X notes

    One can get MySQL to work on MacOS X by following the links to the MacOS X ports. 「1.8 便利な MySQL 関連リンク」節参照.

    MySQL 3.23.7 should include all patches necessary to configure it on MacOSX. You must however first install the pthread package from MySql for MacOSX Server before configuring MySQL.

    You might want to also add an aliases to your shell's resource file to access mysql and mysqladmin from the command line.

    alias mysql '/usr/local/mysql/bin/mysql'
    alias mysqladmin '/usr/local/mysql/libexec/mysqladmin'
    

    4.12 Win32 notes

    この節では Win32 上での MySQL の使用とインストールについて述べます。 これは MySQL Win32 配布物の `README' ファイルにも述べられています。

    4.12.1 Win32 への MySQL のインストール

    もし正式版 MySQL を持っていないなら、最初に以下から シェアウエアバージョンをダウンロードすべきです:

    MySQL 3.21.29

    日本語版の評価版、および正式版の取得は以下になります: MySQL 日本語版

    もし他のプログラムから MySQL に接続しようと考えているなら、 多分 MyODBC ドライバーも必要でしょう。 これは MySQL download page. にあります。

    日本語版の MyODBC ドライバー は: MyODBC 日本語版

    それぞれの配布物のインストールをするには、ダウンロードした物を どこか からのディレクトリで unzip し、Setup.exe プログラムを 実行します。

    標準では、MySQL-Win32 は `C:\mysql' にインストールされるように なっています。 もし違う場所に MySQL をインストールしたいなら、 一度 `C:\mysql' にインストールした後に、そのフォルダを移動します。 MySQL`C:\mysql' から移動したならば、 mysqld に対して、移動先を必ず教えねばなりません。 もし MySQL`D:\programs\mysql' に移動したなら, mysqld を以下のようにして起動します: D:\programs\mysql\bin\mysqld --basedir D:\programs\mysql なお、 C:\mysql\bin\mysqld --help とすると、全てのオプションが表示されます!

    正式版の MySQL では、`C:\my.cnf' ファイルを作成し、 そこに MySQL サーバーのオプションを記述することが可能です。 `\mysql\my-example.cnf'`C:\my.cnf' にコピーし、 ご自分の環境に合わせて編集して使用してください。 全てのパスには \ ではなくて / を使用しなくてはなりません。 もし \ を使用する場合には、これを2倍します。 MySQL では \ はエスケープ文字だからです。 「4.15.4 オプションファイル ( my.cnf )」節参照.

    4.12.2 Win95 / Win98 上での MySQL 起動

    MySQL は TCP/IP をクライアントからサーバーへの接続に使用します。 (これは、あなたのネットワーク上のいかなるマシンからも MySQL サーバーに 接続できるでしょう)。 このため、MySQL を起動する前に、 あなたは TCP/IP をインストールしなくてはなりません。 これは Windows CD-ROM にあります。

    もし古い Win95 (for example OSR2) を使用しているなら、 これは古い Winsock パッケージを使用しているかもしれません! MySQL は Winsock 2 を要求します! 最新の Winsock は Microsoft にあります。 Win98 はデフォルトで新しい Winsock 2 ライブラリですので、 これは Win98 には当てはまりません。

    2つの違う MySQL サーバーがあります:

    mysqld フルデバッグを有効にして、自動 memory allocation をチェックするようにコンパイル
    mysqld-opt Pentium プロセッサー用に最適化した物

    両方とも Intel プロセッサー >= i386 で動作します。

    mysqld サーバーを起動するには, MS-DOS から以下のようにしなくてはなりません:

    C:\mysql\bin\mysqld
    

    これは mysqld をバックグラウンドで動かします。

    MySQL サーバーの kill には:

    C:\mysql\bin\mysqladmin -u root shutdown
    

    Note that Win95/Win98 don't support creation of named pipes. On Win95/Win98, you can only use named pipes to connect to a remote MySQL running on an NT server.

    4.12.3 NT 上での MySQL 起動

    The Win95/Win98 section also applies to MySQL on NT, with the following differences:

    TCP/IP で MySQL を動かすには、service pack 3(以上) が必須です!

    NT では, サーバーの名前は mysqld-nt です. 通常、以下のようにして NT のサービスとして MySQL をインストールしなくてはなりません:

    C:\mysql\bin\mysqld-nt --install
    

    (mysqldmysqld-opt を NT 上で動作させることも出来ます。 しかしこれらは、サービスとしてスタートさせることが出来ず、また、 named pipes の使用も出来ません。)

    MySQL サービスの起動と停止は:

    NET START mysql
    NET STOP mysql
    

    この場合、mysqld-nt に、いかなるオプションも使用できないことに注意!

    もし mysqld-nt をオプション無しで起動する必要があるならば、 mysqld-nt をスタンドアローンのプログラムとして NT 上で走らせることも 出来ます! もし mysqld-nt をオプション無しで NT 上で起動すると、 mysqld-nt は自分自身をサービスとして立ち上げようとします。 デフォルトのサービスオプションを使用して。 もし既に mysqld-nt を止めていたなら、 NET START mysql で 起動しなくてはなりません。

    サービスは MySql という名前で登録されます。 一度インストールしたら、 これは Services Control Manager (SCM) Utility (コントロールパネルにある) を使用するか、NET START MySQL コマンドを使用するかして、 起動されなくてはなりません。 もし、オプションがなにも指定されていないなら、MySQL サービス開始前に、 SCM Utility の "Startup parameters" に記述しなくてはなりません。 一度走れば、 mysqld-ntmysqladmin や SCM utility 、 NET STOP MySQL コマンドで停止できます。 もし SCM を使用して mysqld-nt 停止するなら、 mysqld shutdown normally についての変なメッセージがでます。 When run as a service, mysqld-nt has no access to a console and so no messages can be seen.

    NT では以下のエラーメッセージが出るかもしれません:

    Permission Denied Means that it cannot find mysqld-nt.exe
    Cannot Register Means that the path is incorrect

    もし mysqld-nt をサービスとしてインストールする場合に 問題が発生した場合、フルパスで実行してみてください:

    C:\mysql\bin\mysqld --install
    

    もしこれで動作しないようなら、レジストリ内のパスを修正すれば mysqld-nt を 起動できるでしょう。

    サービスとして mysqld-nt を起動したくないなら以下のようにします:

    C:\mysql\bin\mysqld-nt --standalone
    

    or

    C:\mysql\bin\mysqld-nt --standalone --debug
    

    最新のバージョンでは、デバッグのトレースを `C:\mysqld.trace' に出します。

    4.12.4 Win32 上で MySQL を実行

    MySQLは全ての Win32 プラットフォーム上で TCP/IP をサポートし、 NT 上で named pipe をサポートします。 デフォルトは、NT 上でローカルに接続するときにネームド・パイプが使用され、 そのほかの全ての場合で TCP/IP が使用されます。 ホスト名はどのプロトコルを使用するかを決めます:

    Host name
    protocol
    NULL (none) NT では最初にネームド・パイプを試み、動かなければ TCP/IP を使用します。 Win95/Win98 では TCP/IP を使用します。
    . ネームド・パイプ
    localhost TCP/IP to current host
    hostname TCP/IP

    MySQL クライアントに named pipes を強制的に使用させるには、 --pipe オプションを指定します。 そして、--socket オプションで パイプの名前を指定します。

    MySQL が動いているかどうかは、以下のようにして確認できます:

    C:\mysql\bin\mysqlshow
    C:\mysql\bin\mysqlshow -u root mysql
    C:\mysql\bin\mysqladmin version status proc
    C:\mysql\bin\mysql test
    

    もし Win95/Win98 上で mysqld への接続が遅いようなら、DNS の問題かもしれません。 この場合、 mysqld--skip-name-resolve オプションで 起動し、MySQL 許可テーブルには、localhost と IP アドレスだけ 使用します。 NT上で走る mysqld-nt MySQL サーバーに対しての接続時に DNS を避けるために、 --pipe 引数を指定してネームド・パイプを 使用できます。 これはほとんどの MySQL クライアントで動きます。

    2つの MySQL コマンドラインツールがあります:
    mysql Compiled on native Win32, which offers very limited text editing capabilities.
    mysqlc Compiled with the Cygnus GNU compiler and libraries, which offers readline editing.

    もし mysqlc.exe を使用したいなら, `C:\mysql\lib\cygwinb19.dll'`\windows\system' (か、似たパス) にコピーしなくてはなりません。

    Win32 の MySQL の初期の権限は、ローカルの全てのユーザーに 対して、全てのデータベースで全ての権限が与えられています。 MySQL を安全にするために、全てのユーザーにパスワードを 設定すべきです。また、mysql.user テーブルから Host='localhost'User='' となっているレコードを 削除すべきです。

    root ユーザーにもパスワードを設定すべきです: (The following example starts by removing the anonymous user, that allows anyone to access the 'test' database)

    C:\mysql\bin\mysql mysql
    mysql> DELETE FROM user WHERE Host='localhost' AND User='';
    mysql> QUIT
    C:\mysql\bin\mysqladmin reload
    C:\mysql\bin\mysqladmin -u root password your_password
    

    パスワードを設定した後、もし mysqld サーバーを停止させるなら、 以下のようにします:

    mysqladmin --user=root --password=your_password shutdown
    

    If you are using the shareware version of MySQL under windows, the above command will fail with an error: parse error near 'SET OPTION password'. This is because the shareware version, which is based on MySQL 3.21, doesn't have the SET PASSWORD command.

    With the shareware version you can set the password for the root user as follows:

    C:\mysql\bin\mysql mysql
    mysql> UPDATE user SET password=PASSWORD('your password') WHERE user='root';
    mysql> QUIT
    C:\mysql\bin\mysqladmin reload
    

    With the registered MySQL version you can easily add new users and change privileges with GRANT and REVOKE commands. 「7.26 GRANTREVOKE 構文」節参照. With the Windows shareware version on has to use INSERT, UPDATE and DELETE one the tables in the mysql database to manage users and their privileges. 「6.12 何故 Access denied エラーになるのか」節参照.

    4.12.5 SSH を利用してリモートの MySQL に Win32 から接続

    SSH を利用して、Win32 から、どうやってリモートの MySQL に接続するかの説明です。 (by David Carlson).

    That's it. It works very well with a direct Internet connection. I'm having problems with SSH conflicting with my Win95 network and Wingate - but that'll be the topic of a posting on another software company's usegroup!

    4.12.6 MySQL-Win32 compared to Unix MySQL

    MySQL-Win32 バージョンは現在それ自体とても安定した(stableな)状態で供給されています。 MySQL-win32 バージョンは すべての機能がUNIXバージョンのMySQLと対応しています。 ただし、下記のような例外があります。

    Win95 とスレッド
    Win95は、各々のスレッドの作成のためにメインメモリのおよそ200バイトをメモリリーク します。これのために、もしあなたが多くの接続をすれば、MySQL の各々の接続が新しい スレッドを作成するので、あなたはWin95では長時間、mysqld を実行させるべきではあり ません! WinNT and Win98 don't suffer from this bug.
    ブロック読み込み
    MySQL はそれぞれの接続のためにブロック読み込みを使います。 これは以下の事柄を意味しています:
    • 接続は、MySQL のUnixバージョンで起こるように、8時間の後に自動的に接続が断 ち切られるわけではありません
    • もし接続が「ハングすれば」、MySQLを終了しないでそれを中断することは、不可能です。
    • mysqladmin kill は、スリープしている接続上では働かないはずです。
    • スリープしている接続があるかぎり、mysqladmin shutdown は、中絶することができません。
    私たちは、近い将来にこれを修正することを計画しています。
    UDF 関数
    差し当り、MySQL-Win32 はユーザの定義できる関数をサポートしません。
    DROP DATABASE
    複数のスレッドで使われているデータベースはDROPをすることができません。
    タスクマネージャーからの MySQL の終了
    Windows95では「Windowsの終了」やタスクマネージャから MySQL を終了することはできません。 mysqladmin shutdown で終了しなければなりません。
    大文字小文字を区別しない名前
    Win32ではファイルネームは大文字小文字が区別されます。そのため、Win32用の MySQL で はテーブル名は大文字小文字が区別されます。唯一の制限は、名前が所定のステートメン トの至る所の同じケースで与えられなければならないそのデータベースと表です。 下のようなクエリーは働きません。それが表の MY_TABLE, my_table 両方を参照するからで す。
    SELECT * FROM my_table WHERE MY_TABLE.col=1;
    
    The `\' (ディレクトリ名)
    Win95のパス名コンポーネントは、 `\' によって離されますが、その文字は同じく MySQL のエ スケープ文字でもあります。もしあなたは LOAD DATA INFILE または SELECT ... INTO OUTFILE を使って、UNIXでのファイルネームで `/' を書くようにしたいなら、その代わりに 「\\」と `\' をダブルで使わなくてはなりません。
    LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
    SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';
    
    Can't open named pipe エラー
    もしあなたが最新の mysql-clients を持つNTの上で MySQL-Win32 のシェアウェアバージョン を使えば、あなたは、次のエラーを得ることになるはずです:
    error 2017: can't open named pipe to host: . pipe...
    
    これは、 MySQL のリリースバージョンがデフォルトでNTの上にネームドパイプを使ってい るために起こっています。 あなたは新しい MySQL クライアントにまたは `C:\my.cnf' ファイルを作るさい(このファイ ルは以下の情報を含みます)に --host=localhost オプションを使うことによってこのエ ラーを避けられます。
    [client]
    host = localhost
    
    Access denied for user error
    もしあなたが同じマシン上の MySQL サーバーにアクセスした時 Access denied for user: 'some-user@unknown' to database 'mysql' エラーを得るなら、これはあなたの MySQL があなた のマシンのホスト名を正しく解決できてないことを意味します。 これを修正するにはあな たはファイル `\windows\hosts' を作り、以下の情報を書くことによってすべきです。 (注:Windows95,98には\Windowsフォルダ上にサンプルとして「lmhosts.sam」ファイルが 既にあるはずです)
    127.0.0.1       localhost
    

    ここにはWin32リリースを助けてくれる誰かのためにいくつかオープンになっている問題 があります:

    他のwin32に限定された症状は MySQL-Win32 ディストリビューションに同梱されている `README' ファイルで説明されています。

    4.13 OS/2 notes

    MySQL uses quite a few open files. Because of this, you should add something like the following to your `CONFIG.SYS' file:

    SET EMXOPT=-c -n -h1024
    

    If you don't do this, you will probably run into the following error:

    File 'xxxx' not found (Errcode: 24)
    

    When using MySQL with OS/2 Warp 3, FixPack 29 or above is required. With OS/2 Warp 4, FixPack 4 or above is required. This is a requirement of the Pthreads library. MySQL must be installed in a partition that supports long file names such as HPFS, FAT32, etc.

    The `INSTALL.CMD' script must be run from OS/2's own `CMD.EXE' and may not work with replacement shells such as `4OS2.EXE'.

    The `scripts/mysql-install-db' script has been renamed: it is now called `install.cmd' and is a REXX script which will set up the default MySQL security settings and create the WorkPlace Shell icons for MySQL.

    Dynamic module support is compiled in but not fully tested. Dynamic modules should be compiled using the Pthreads runtime library.

    gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
        -o example udf_example.cc -L../lib -lmysqlclient udf_example.def
    mv example.dll example.udf
    

    Note: Due to limitations in OS/2, UDF module name stems must not exceed 8 characters. Modules are stored in the `/mysql2/udf' directory; the safe-mysqld.cmd script will put this directory in the BEGINLIBPATH environment variable. When using UDF modules, specified extensions are ignored -- it is assumed to be `.udf'. For example, in Unix, the shared module might be named `example.so' and you would load a function from it like this:

    CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";
    

    Is OS/2, the module would be named `example.udf', but you would not specify the module extension:

    CREATE FUNCTION metaphon RETURNS STRING SONAME "example";
    

    4.14 TcX binaries

    サービスとして、TcX は MySQL のバイナリ配布を提供しています。 これらのコンパイルは TcX 内部でおこなったり、我々にマシンの アクセスを提供してもらっている顧客のマシン上で行っています。

    これらの配布物は scripts/make_binary_distribution で作成され、 以下のコンパイルオプションで調整されています。

    SunOS 4.1.4 2 sun4c with gcc 2.7.2.1
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --disable-shared
    SunOS 5.5.1 sun4u with egcs 1.0.3a
    CC=gcc CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory
    SunOS 5.6 sun4u with egcs 2.90.27
    CC=gcc CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory
    SunOS 5.6 i86pc with gcc 2.8.1
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
    Linux 2.0.33 i386 with pgcc 2.90.29 (egcs 1.0.3a)
    CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
    SCO 3.2v5.0.4 i386 with gcc 2.7-95q4
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    AIX 2 4 with gcc 2.7.2.2
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    OSF1 V4.0 564 alpha with gcc 2.8.1
    CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
    Irix 6.3 IP32 with gcc 2.8.0
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
    BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1
    CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
    BSDI BSD/OS 2.1 i386 with gcc 2.7.2
    CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

    上で示したオプション以外で最適化を施した方はだれでも、開発者向けの メーリングリストにポストできます。 developer@lists.mysql.com.

    RPM 配布では MySQL 3.22 を user-contributed としています。 3.22 をはじめ、いくつかの RPM パッケージは TcX 製です。

    4.15 インストール後の設定とテスト

    初めて MySQLをインストールしたら(バイナリからでもソースからでもですが)、 サーバーを動作させるために、許可テーブルを初期化しなくてはなりません。 またマシンの起動時、停止時に、サーバーを自動で開始、停止することもできます。

    通常、許可テーブルのインストールとサーバーの開始は、 ソース配布なら以下のようにします:

    shell> ./scripts/mysql_install_db
    shell> cd mysql_installation_directory
    shell> ./bin/safe_mysqld &
    

    For a binary distribution, do this:

    shell> cd mysql_installation_directory
    shell> ./bin/mysql_install_db
    shell> ./bin/safe_mysqld &
    

    テストは、MySQL のトップディレクトリーから簡単に実行できます。 バイナリ配布を使用する場合、これ(トップディレクトリ)は インストール先のディレクトリーになるでしょう(`/usr/local/mysql')。 ソース配布の場合、これは MySQL のソースディレクトリです。

    コマンドは本節といかに続く節で説明しますが、BINDIRmysqladminsafe_mysqld がインストールされたディレクトリを示します。 バイナリ配布を使用している場合、BINDIR はバイナリ配布の `bin' ディレクトリになります。 ソースからインストールした場合、BINDIR は、configure で特別指定しない限り、 `/usr/local/bin' です。 EXECDIRmysqld サーバーのインストール先です。 バイナリ配布を使用している場合、これは BINDIR ディレクトリと同一になります。 ソースからインストールした場合、`/usr/local/libexec' です。

    Testing is described in detail below:

    1. 必要ならば、mysqld サーバーを起動し MySQL の許可テーブルを初期化します。 (許可テーブルはユーザーがどのような特権をもってサーバーに接続を許すかを決定するものです。) これは通常、mysql_install_db スクリプトで初期化されます。
      shell> scripts/mysql_install_db
      
      通常、mysql_install_db の実行は初めて MySQL をインストール したあと一度だけ必要です。 すでにインストールされているものを アップグレードする際にはこの手順は飛ばせます。 (しかし、mysql_install_db は実に安全で、すでにテーブルが 存在している場合はいかなるテーブルも更新しません。したがって、 実行すべきかどうかわからない場合は、mysql_install_db を常に 走らせることができます) mysql_install_db は 6個のテーブルを作ります (user, db, host, tables_priv, columns_priv and func) mysql データベースに。 初期の特権状態についての説明は 「6.9 MySQL 特権許可の初期設定」節. これらの特権は MySQL root ユーザーに なんでもできるように許可し、そして、だれもが 'test' という名前か 'test_' ではじまる名前をもつ データベースを作成、使用できるように許可されています。 もし許可テーブルを設定していない場合、サーバーを起動時に以下のエラーが出ます:
      mysqld: Can't find file: 'host.frm'
      
      バイナリ配布の MySQL では、もし MySQL./bin/safe_mysqld を実行しないで起動した場合に、このエラーがおきます。! rootmysql_install_db を実行する必要があるとあなたは思うかもしれません。 しかし、 MySQLroot 以外のユーザーで起動できます。 データベースディレクトリがサーバーを起動したユーザに対して読み書きが許可されていれば良いのです。 MySQL を一般ユーザーで走らせる方法は 「18.7 一般ユーザで MySQL を動かす方法」節. もし mysql_install_db で問題が出たら、 「4.15.1 mysql_install_db 実行時の問題」節. を参照のこと。 mysql_install_db スクリプトを走らせるにはいくつか選択があります:
      • mysql_install_db を走らせる前に編集して、許可の初期状態を変更してもいいでしょう。 これは多くのマシンに同じ特権設定をして MySQL をインストールする際に 役立ちます。 この場合、いくつかの INSERT 構文を mysql.usermysql.db テーブルにたいして追加するようにするだけですみます!
      • もしインストール後に許可を変更したい場合、 mysql -u root mysqlMySQL root ユーザーで接続して直接許可テーブルを変更する SQL 文を実行します。
      • すでに許可テーブルが作成された状態で、完全に許可テーブルを作成し直すことができます。 これはすでにインストールされたテーブルがある場合や、mysql_install_db を編集した後にそう思うかもしれません。
      これらの選択については 「6.9 MySQL 特権許可の初期設定」節 からさらに情報が得られます。
    2. MySQL サーバーを以下のようにして起動します:
      shell> cd mysql_installation_directory
      shell> bin/safe_mysqld &
      
      If you have problems starting the server, see 「4.15.2 MySQL サーバー起動時の問題」節.
    3. mysqladmin でサーバーが走っているか確認します。 サーバーが立ち上がり接続を受け付けるか確認する簡単な方法を以下に示します:
      shell> BINDIR/mysqladmin version
      shell> BINDIR/mysqladmin variables
      
      例えば、mysqladmin version の出力はあなたのプラットフォームと MySQL のバージョンを出力します。 出力は以下の様にでます:
      shell> BINDIR/mysqladmin version
      mysqladmin  Ver 6.3 Distrib 3.22.9-beta, for pc-linux-gnu on i686
      TCX Datakonsult AB, by Monty
      
      Server version          3.22.9-beta
      Protocol version        10
      Connection              Localhost via UNIX socket
      TCP port                3306
      UNIX socket             /tmp/mysql.sock
      Uptime:                 16 sec
      
      Running threads: 1  Questions: 20  Reloads: 2  Open tables: 3
      
      BINDIR/mysqladmin の使用方法は、--help オプションで起動することにより得られます。
    4. サーバーをシャットダウンするには:
      shell> BINDIR/mysqladmin -u root shutdown
      
    5. サーバーをリスタートするには、safe_mysqldmysqld を直接実行します。 例えば:
      shell> BINDIR/safe_mysqld --log &
      
      safe_mysqld が失敗するなら、 MySQL のインストールディレクトリーから実行してみてください。 もしそれでも起動しないなら、 「4.15.2 MySQL サーバー起動時の問題」節 を参照のこと。
    6. いくつかの簡単なテストでサーバーが動いているか確認できます。 以下のようになります:
      shell> BINDIR/mysqlshow
      +-----------+
      | Databases |
      +-----------+
      | mysql     |
      +-----------+
      
      shell> BINDIR/mysqlshow mysql
      Database: mysql
      +--------------+
      |    Tables    |
      +--------------+
      | columns_priv |
      | db           |
      | func         |
      | host         |
      | tables_priv  |
      | user         |
      +--------------+
      
      shell> BINDIR/mysql -e "select host,db,user from db" mysql
      +------+--------+------+
      | host | db     | user |
      +------+--------+------+
      | %    | test   |      |
      | %    | test_% |      |
      +------+--------+------+
      
      他のプラットフォームで MySQL のパフォーマンスを比較するために `sql-bench' にベンチマークがあります。 `sql-bench/Results' ディレクトリには、他のデータベースやプラットフォームで ベンチを実行した結果があります。 全てのテストを実行するには、以下のようにします:
      shell> cd sql-bench
      shell> run-all-tests
      
      RPM バイナリ配布には `sql-bench' ディレクトリがありません。 (RPM のソース配布には含まれます) この場合、ベンチマークをインストールしなくてはなりません。 MySQL 3.22 のバイナリ配布から、 `mysql-bench-VERSION-i386.rpm' という名前で RPM パッケージを作っており、 これにはベンチマークのデータとコードが含まれます。 `tests' サブディレクトリでテストすることも可能です。 例えば、`auto_increment.tst' の実行は以下のようにします:
      shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
      
      これの結果は `./tests/auto_increment.res' ファイルに書き出されます。

    4.15.1 mysql_install_db 実行時の問題

    この節では mysql_install_db を実行した際にでくわすかもしれない問題について述べます:

    mysql_install_db doesn't install the privilege tables
    これは mysql_install_db が特権テーブルをインストールできなかった事のメッセージですが、 続いて以下のようにメッセージが出た場合:
    starting mysqld daemon with databases from XXXXXX
    mysql daemon ended
    
    この場合、注意深く log ファイルを調べてください! エラーメッセージに出ている `XXXXXX' ディレクトリにログファイルがあり、 これに mysqld がなぜスタートしなかったか記されているはずです。 もし何が起こったかわからない場合、このログファイルを含んで mysqlbug を使用して バグレポートを投稿してください! 「2.3 バグや問題を報告する方法」節参照.
    There is already a mysqld daemon running
    この場合、 mysql_install_db を実行する必要はありません。 mysql_install_db を実行するのは MySQL を初めてインストールした後、 たった一回だけです。
    Installing a second mysqld daemon doesn't work when one daemon is running
    これはすでに MySQL がインストールされており、 しかし新しいインストールを違うところに行おうとした場合に発生します。 (例えば、一度に二つのインストールを実行した場合など) 一般にこの問題は二つ目のサーバーを動いているサーバーと同じポート、ソケットを使用して起動しようとした場合に発生します。 この場合、Can't start server: Bind on TCP/IP port: Address already in use エラーメッセージか Can't start server : Bind on unix socket... エラーメッセージが出ます。 新しいサーバーは以下のようにして違うポート、ソケットで起動できます:
    shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
    shell> MYSQL_TCP_PORT=3307
    shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
    shell> scripts/mysql_install_db
    shell> bin/safe_mysqld &
    
    この後、二つのデーモンを違うポート、ソケットで実行するように、起動スクリプトを変更します。 例えば、safe_mysqld を二つ書きますが、--socket, --port--basedir オプションをそれぞれの safe_mysqld に指定します。
    `/tmp' に書き込み許可をあなたが持っていないなら
    もしソケットファイルを標準の場所(`/tmp')に作成するための書き込み許可がないなら、 あるいは、一時ファイルを `/tmp' に作成できないなら、 mysql_install_db の実行時、あるいは mysqld の起動/使用時に エラーとなるでしょう。 違うディレクトリーにソケットファイルや一時ファイルを指定するには:
    shell> TMPDIR=/some_tmp_dir/
    shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
    shell> export TMPDIR MYSQL_UNIX_PORT
    
    `some_tmp_dir' は書き込みが可能なディレクトリーを指定しなくてはなりません。 この後、mysql_install_db を走らせ、サーバーを起動する事ができます:
    shell> scripts/mysql_install_db
    shell> BINDIR/safe_mysqld &
    
    mysqld crashes at once
    もし RedHat 5.0 上で 2.0.7-5 より古い glibc を使用している場合、 全ての glibc パッチを当てなくてはなりません! これに関しては MySQL メールのアーカイブに情報が多くあります。 メーリングリストのアーカイブのリンクは MySQL documentation page. see 「4.11.5 Linux notes (all Linux versions)」節. mysqld--skip-grant 指定で起動することもできます。 そして以下のように mysql を使用して自分自身の手により許可を加えます:
    shell> BINDIR/safe_mysqld --skip-grant &
    shell> BINDIR/mysql -u root mysql
    
    mysql から手動で mysql_install_db に書かれている SQL コマンドを実行します。 許可テーブルをサーバーに読み込ますためには、 mysqladmin reload を実行します。

    4.15.2 MySQL サーバー起動時の問題

    通常 mysqld サーバーの起動は、以下の三つの方法のうち一つで行います:

    どの方法でサーバーを起動しても、もし起動に失敗すれば、ログファイルを確認してください。 なぜ失敗したか記録されています。ログファイルはデータベースディレクトリにあります。 (バイナリ配布の場合 `/usr/local/mysql/data' 、ソース配布の場合 `/usr/local/var' ) データベースディレクトリに `host_name.log' というファイル (host_name はあなたのサーバー名) を探してください。 以下のようにしてそのファイルの最後の数行を確認します:

    shell> tail host_name.err
    shell> tail host_name.log
    

    mysqld デーモンの起動時に、デーモンはデータディレクトリにディレクトリを変えます。 ログファイルと pid (process ID) ファイルがこのディレクトリに書ける事、 そしてデータベースがこのディレクトリにある事を、デーモンは要求します。

    データディレクトリの場所は配布物のコンパイル時に指定されています。 mysqld があなたのシステム上にデータベースディレクトリを見つけれなかった場合、 サーバーは動きません。 mysqld--help オプションで起動すれば mysqld の デフォルトのパスを知ることができますので、 サーバーが起動しない理由が違うパスを使用しているために起こっているかどうかがわかります。 パスが違う場合、mysqld のコマンドラインの引数に正しいパスを指定して、デフォルト値を 上書きすることが可能です。(これらオプションは safe_mysqld にも同様に使用できます)

    通常、MySQL がインストールされたディレクトリのベースディレクトリだけを mysqld に教えればいいはずです。 これは --basedir オプションを指定します。 --help オプションを使用すればパスの変更が確認できます。 (--help必ず 最後に指定のこと)  例えば:

    shell> EXECDIR/mysqld --basedir=/usr/local --help
    

    パスの設定が思い通りに言ったことを確認したら、 --help オプションを外してサーバーを起動します。

    以下のエラーの場合、他のプログラム(か他の mysqld サーバー)が mysqld が使用しようとしている TCP/IP ソケットを使っています:

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

    他の mysqld サーバーが走っていないかを ps で確認します。 もし他のサーバーが起動していないなら、 telnet your-host-name tcp-ip-port-number コマンドを実行し、何回か RETURN キーをたたいてみてください。 もし、 telnet: Unable to connect to remote host: Connection refused のような エラーが出た場合、なにかが mysqld が使用しようとしているポートを既に使っています。 「4.15.1 mysql_install_db 実行時の問題」節参照, and 「19.3 同一マシン上に複数の MySQL サーバーを走らせる」節.

    safe_mysqld スクリプトは、ソース配布からでもバイナリ配布の MySQL からでも、 たとえ違う場所にインストールされていても、サーバーを起動できるように作られています。 safe_mysqld は以下のどれか一つが真であることを期待します: locations. safe_mysqld expects one of these conditions to be true:

    safe_mysqld はサーバーとデータベースを自分が起動されたディレクトリからの相対パスで探します。 よって、 safe_mysqldMySQL のインストールディレクトリから起動する限りは、 MySQL バイナリ配布物を自分の好きなところにインストールできます。 その場合の起動は:

    shell> cd mysql_installation_directory
    shell> bin/safe_mysqld &
    

    もし safe_mysqldMySQL インストールディレクトリから起動しても失敗するなら、 safe_mysqld をあなたのシステム用に mysqld のパスやパス名のオプションを 書き換えてもかまいません。 この場合、 MySQL をアップグレードした場合、あなたが変更した safe_mysqld は上書きされるので、変更したものはインストール前にコピーしておき、 再び戻さなくてはなりません。

    もし mysqld がすでに走っている場合、以下のコマンドにてパスの設定を知ることができます:

    shell> mysqladmin variables
    
    or
    
    shell> mysqladmin -h 'your-host-name' variables
    

    もし safe_mysqld がサーバーを起動しても接続できないようなら、 `/etc/hosts' ファイルに以下のような記述を持たせてください:

    127.0.0.1       localhost
    

    この問題はスレッドライブラリーがなくて MySQL を MIT-pthreads を 使用するようにして作ったシステムにだけ起こります。

    4.15.3 MySQL の自動起動と自動停止

    mysql.server スクリプトは start, stop 引数を指定することにより サーバーを起動、停止できます:

    shell> mysql.server start
    shell> mysql.server stop
    

    mysql.serverMySQL インストールディレクトリの `share/mysql' ディレクトリ、 または MySQL ソースツリーの `support-files' ディレクトリにあります。

    mysql.server はサーバーを起動時する前に MySQL がインストールされた ディレクトリにディレクトリを変え、safe_mysqld を起動します。 もし標準以外にインストールしているバイナリ配布を使用しているなら、 mysql.server を編集する必要があるかもしれません。 safe_mysqld を起動する前に正しいディレクトリに cd するように変更します。 safe_mysqld に他のオプションを与えるように mysql.server を変えても構いません。 他のユーザーで実行したい場合、mysql_daemon_user=root を変更しても構いません。 safe_mysqld に他のオプションを与えるために、 mysql.server を変更しても構いません。

    mysql.server stop はサーバーにシグナルを送ってサーバーを停止します。 mysqladmin shutdown で手動でサーバーを落とすこともできます。

    MySQL を使用している製品のために、これらスタート、ストップを `/etc/rc*' に書きたいと思われるかもしれません。 ここでの注意点は、変更した mysql.server は、 MySQL をアップグレードしたときに上書きされるということです。 よって、変更したものはインストール前にコピーを取っておくべきです。

    もしあなたのシステムが `/etc/rc.local' を起動スクリプトとして使用しているなら、 以下のようにその中に記述します:

    /bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld &'
    

    グローバル設定ファイルである `/etc/my.cnf' に、 mysql.server の オプションを記述することも可能です。`/etc/my.cnf' ファイルは以下のような 記述になっています:

    [mysqld]
    datadir=/usr/local/mysql/var
    socket=/tmp/mysqld.sock
    port=3306
    
    [mysql.server]
    user=mysql
    basedir=/usr/local/mysql
    

    mysql.server スクリプトは以下の変数を使用します: user, datadir, basedir, bindir そして pid-file.

    4.15.4 オプションファイル ( my.cnf )」節参照.

    4.15.4 オプションファイル ( my.cnf )

    MySQL 3.22 のサーバー、クライアントともに、オプションファイルからデフォルトの起動オプションを読み込むことができます。

    UNIX では MySQL は以下のファイルからデフォルトオプションを読みます:

    Filename Purpose
    /etc/my.cnf Global options
    DATADIR/my.cnf Server-specific options
    ~/.my.cnf User-specific options

    DATADIRMySQL データディレクトリです (普通 `/usr/local/mysql/data' or `/usr/local/var'). このディレクトリはconfigure時に決定されており、 --datadirmysqld 起動時に指定しても変更されません。 (サーバーはコマンドラインの引数を処理する前にオプションファイルを探します。 よって、--datadir 引数を指定してもオプションファイルを探す場所を指定することにはなりません。)

    Win32 では MySQL は以下のファイルからデフォルトオプションを読みます:

    Filename Purpose
    windows-system-directory\my.ini
    C:\my.cnf Global options
    C:\mysql\data\my.cnf Server-specific options

    Note that you on Win32 should specify all paths with / instead of \. If you use \, you need to specify this twice, as \ is the escape character in MySQL.

    MySQL は上記の表にかかれている順にオプションファイルを読みます。 もし複数オプションファイルがあった場合、後から読まれた設定が有効になります。 全てのオプションはコマンドラインの引数に上書きされます。 いくつかのオプションは環境変数に定義できます。 オプションファイルとコマンドラインの引数は環境変数を上書きします。

    以下のプログラムはオプションファイルをサポートします:mysql, mysqladmin, mysqld, mysqldump, mysqlimport, myisamchk and myisampack.

    オプションファイルには、プログラムがサポートしているコマンドラインの long オプション(例えば、-u ではなくて --user の方)を書くことができます。 プログラムを --help で起動すれば、設定可能な変数名が得られます。

    オプションファイルの書式は以下です:

    #comment
    コメントは `#'`;' 文字で始めます。空の行は無視します。
    [group]
    グループ宣言。 group はオプションを定義するプログラムかグループの名前です。 この宣言の後、オプションset-variable 行で、このグループにオプションを与えます。 このセクションの範囲は、他のグループ宣言の行が来るか、ファイルの最後に来るまでです。
    option
    これはコマンドラインの --option と等価です。
    option=value
    これはコマンドラインの --option=value と等価です。
    set-variable = variable=value
    これはコマンドラインの --set-variable variable=value と等価です。 これは mysqld 変数で使用される形式です。

    client グループは、全ての MySQL クライアント(mysqldは除)に対してオプションを定義します。 これはサーバーに接続する際に使用するパスワードを指定できるグループです。 (この場合、オプションファイルは自分だけが読み書きできるようにしてください)

    オプションや値の善後にある全てのブランク文字は自動で取り除かれます。 値として、`\b',`\t', `\n', `\r', `\\' and `\s' のエスケープシーケンスが使用できます。 (`\s' == blank).

    オプションファイル例:

    [client]
    port=3306
    socket=/tmp/mysql.sock
    
    [mysqld]
    port=3306
    socket=/tmp/mysql.sock
    set-variable = key_buffer=16M
    set-variable = max_allowed_packet=1M
    
    [mysqldump]
    quick
    

    ユーザーオプションファイル例:

    [client]
    # The following password will be sent to all standard MySQL clients
    password=my_password
    
    [mysql]
    no-auto-rehash
    

    もしソース配布を持っているなら、 `my-example.cnf' という名前のサンプルファイルを `support-files' ディレクトリに見ることができます。 もしバイナリ配布を使用しているなら、 `DIR/share/mysql' ディレクトリを探してください (ここで DIRMySQL がインストールされたディレクトリのパス名で、普通は `/usr/local/mysql')。 この `my-example.cnf' ファイルを自分のディレクトリに `.my.cnf' という名前でコピーして使用できます。

    MySQL プログラムにオプションファイルを読ませないようにするには、 コマンドラインの一番最初に --no-defaults を書きます。 これはオプションの最初でないと有効になりません! どのオプションが定義されているか確かめるには、--print-defaults を最初のオプションに指定します。

    If you want to force the use of a specific config file, you can use the option --defaults-file=full-path-to-default-file. If you do this, only the specified file will be read.

    開発者向け情報: オプションファイルの操作は全てのオプションをコマンドラインの引数より先に処理するように簡単に埋め込まれています。 これはオプションを最後に処理するプログラムを複数立ちあげる場合に都合よく動きます。 もしオプションファイルを読み込む機能のない古いプログラムを使用しているなら、 たった二行だけ注意して書けばいいだけです。 この動作については MySQL クライアントプログラムのコードを参考にしてください。

    4.16 MySQL のアップグレード/ダウングレード時に特別に行なうことが何かあるか?

    MySQL 形式とデータファイルは、MySQL が同じベースバージョ ンである限り、同じアーキテクチャ上の異なるバージョン間でいつでも移動でき ます。現在のベースバージョンは 3 です。MySQL のリコンパイルによっ て文字セットが変更された場合(これはソート順も変更します)、全てのテーブル に myisamchk -r -q を行なう必要があります。そうしなければ、インデッ クスが正しい順になりません。

    もしあなたが神経質だったり新しいバージョンを恐れている場合、いつでもあな たの古い mysqldmysqld-'old-version-number' のような何 かにリネームできます。もし新しい mysqld が予期せぬ何かを行った場 合、単純にそれをシャットダウンし、古い mysqld を再起動することが できます!

    アップグレード時には、もちろん、古いデータベースをバックアップもしておく べきです。時々は少し神経質になるのは良いことです!

    アップグレード後、再コンパイルされたクライアントプログラムで、 Commands out sync や予期せぬコアダンプのような問題が起きる場合、 おそらく、プログラムのコンパイル時に古いヘッダやライブラリファイルを使用 したのでしょう。この場合、`mysql.h' ファイルと `libmysql.a' ラ イブラリが、新しい MySQL 配布からのものであるかどうかを確かめる ために、日付をチェックすべきです。もし違っていれば、プログラムを再コンパ イルしてください!

    もし新しい mysqld サーバーが起動できないとか、パスワード無しで 接続できないとか、いくつかの問題が発生した場合、以前のインストールでできた 古い `my.cnf' ファイルがあるかどうかを確認してください! program-name --print-defaults で確認できます. もしこの出力が プログラムの名称以外の物を返した場合、有効になっている my.cnf ファイルが あります!

    新しいリリースの MySQL をインストールした場合に常に Msql-Mysql-modules を再構築、再インストールすることは いい考えです。すべての DBI スクリプトが MySQL の アップグレード後にコアダンプする兆候に気づいた場合は、特に そうしてください。

    4.16.1 3.22 から 3.23 バージョンへのアップグレード

    MySQL 3.23 は新しい MyISAM 型のテーブルと、古い ISAM 型の テーブルをサポートします。 3.23 を使用する際、古いテーブル(ISAM) を変換する必要はありません。 デフォルトでは、新しく作られるテーブルが MyISAM 型になります。 (これは mysqld--default-table-type=isam オプションで 起動することにより、変更できます)。 ISAM テーブルを MyISAM に変更するには、 ALTER TABLE を使用するか、mysql_convert_table_format perl スクリプトを使用します。

    3.22 と 3.21 のクライアントは問題なく 3.23 サーバーで動作します。

    以下に、3.23 にアップグレードするときに、注目する必要があるものを列挙します:

    4.16.2 3.21 から 3.22 バージョンへのアップグレード

    3.21 と 3.22 の間には互換性に影響する変更はありません。DATE 型を 伴って生成された新しいテーブルは、日付の格納に新しい方法を使用することだ けが pitfall です。これらの新しいフィールドに古いバージョンの mysqld からアクセスすることはできません。

    MySQL 3.22 インストール後、新しいサーバを開始して、 mysql_fix_privilege_tables スクリプトを実行すべきです。これは GRANT コマンドを使用するために必要な特権を追加します。これを忘れ ると、ALTER TABLECREATE/DROP INDEX を使用しようとした 時に Access denied になります。MySQL root ユーザがパスワー ドを要求する場合、mysql_fix_privilege_tables への引数としてそれを 与えてください。

    C API インタフェース mysql_real_connect() は変更されました。この 関数を呼び出す古いクライアントプログラムを持っている場合は、新しい db 引数に 0 を置く(またはより速い接続のために db 要 素を送るようにクライアントをコーディングしなおす)必要があります。 mysql_real_connect() を呼び出す前に mysql_init() を呼ばなくてはなりません! この変更は、MYSQL の構造体にオプションを保存するための 新しい mysql_options() 関数を有効にします。

    4.16.3 3.20 から 3.21 バージョンへのアップグレード

    既に 3.20.28 より前のバージョンが稼働していて、3.21.x に変更したい場合は、 次を行なう必要があります:

    safe_mysqld --old-protocolmysqld 3.21 サーバを起動すれ ば、3.20 配布からのクライアントでそれを使用できます。この場合、新しいク ライアント関数 mysql_errno() はサーバのエラーは何も返さず、 CR_UNKNOWN_ERROR だけを返します (ただしクライアントのエラーについ ては働きます)。そして サーバは古い password() チェックを新しいものの代わ りに使用します。

    mysqld--old-protocol オプションを使わない場合、 次の変更をする必要があります:

    MySQL 3.20.28 とそれ以降は、クライアントに影響を及ぼさずに、新 しい user テーブル形式を処理することができます。3.20.28 より前の MySQL バージョンを持っている場合は、user テーブルを変換 すると、パスワードはその上ではもう働きません。安全のため、最初に少なくと も 3.20.28 にアップグレードし、それから 3.21.x にアップグレードすべきで す。

    新しいクライアントコードは 3.20.x mysqld サーバで動作するので、も し 3.21.x で問題があった場合は、クライアントをもう一度再コンパイルする必 要はなく、古い 3.20.x サーバを使用することができます。

    mysqld--old-protocol オプションを使用しない場合、古い クライアントはエラーメッセージを発します:

    ERROR: Protocol mismatch. Server Version = 10 Client Version = 9
    

    新しい Perl インタフェース DBI/DBD は古い mysqlperl インタフェースもサポートします。mysqlperl を使用する場合に行う必 要のある変更は、connect() 関数の引数の変更だけです。新しい引数は: host, database, user, password (userpassword 引数の順番が変更されました)。 「20.5.1.1 The DBI interface」節参照.

    次の変更は古いアプリケーションでのクエリに影響します:

    4.16.4 他のアーキテクチャへのアップグレード

    もし、MySQL 3.23 を使用しているならば、 違うアーキテクチャのマシンに、.frm, .MYI,.MYD ファイルを コピーすることが出来ます。 ただし、両者間で、同じ浮動小数点のフォーマットをサポートしている場合に限ります。 (MySQL takes care of any byte swapping issues).

    現在 MySQL データとインデックスファイル (ISAM `*.ISD'`*.ISM' ファイル) はアーキテクチャ依存で、いくつかのケースでは OS 依存です。アプリケーションを、現在のマシンとは異なるアーキテクチャ/OS を 持つ他のマシンに移したい場合は、単純にファイルを他のマシンにコピーするこ とでデータベースを移行しようとすべきではありません。mysqldump を 使用すべきです。

    デフォルトでは mysqldump は、完全な SQL ステートメントファイルを 生成します。それからそのファイルを他のマシンへ転送し、mysql クラ イアントへの入力として与えることができます。

    有効なオプションが何かを見るためには、mysqldump --help を試してく ださい。データを MySQL のより新しいバージョンに移す場合、速くコ ンパクトなダンプを得るために、より新しいバージョンで mysqldump --opt を使用すべきです。

    2つのマシン間でデータベースを移動する最も簡単な (しかし最も速くはない) 方法は、データベースが置かれているマシン上で次のコマンドを実行することで す:

    shell> mysqladmin -h 'other hostname' create db_name
    shell> mysqldump --opt db_name \
            | mysql -h 'other hostname' db_name
    

    遅いネットワーク上でリモートマシンからデータベースをコピーしたい場合は、 次を使用できます:

    shell> mysqladmin create db_name
    shell> mysqldump -h 'other hostname' --opt --compress db_name \
            | mysql db_name
    

    ファイル内の結果を格納することもできます (この例では圧縮されています):

    shell> mysqldump --quick db_name | gzip > db_name.contents.gz
    

    データベースの中身を含んでいるファイルを、目的のマシンに転送して、次のコ マンドを実行してください:

    shell> mysqladmin create db_name
    shell> gunzip < db_name.contents.gz | mysql db_name
    

    データベース転送を実行するために、mysqldumpmysqlimport も使用できます。大きなテーブルでは、これは単純な mysqldump の使用 よりもとても速いです。次に示すコマンドでは、DUMPDIRmysqldump からの出力を格納するために使用するディレクトリの完全な パス名を表わしています。

    まず、出力ファイルのためのディレクトリを作成して、データベースをダンプし ます:

    shell> mkdir DUMPDIR
    shell> mysqldump --tab=DUMPDIR db_name
    

    それから、DUMPDIR ディレクトリ内のファイルを目的のマシン上の対応 するディレクトリに転送し、MySQL にファイルをロードします:

    shell> mysqladmin create db_name           # create database
    shell> cat DUMPDIR/*.sql | mysql db_name   # create tables in database
    shell> mysqlimport db_name DUMPDIR/*.txt   # load data into tables
    

    mysql データベースのコピーも忘れないでください。それは承認テーブ ル (user, db, host) が格納されるためです。 mysql データベースをその場所に置くまで、新しいマシン上では MySQL root ユーザとしてコマンドを実行する必要があります。

    新しいマシン上へ mysql データベースを導入した後、サーバが承認テー ブル情報を再ロードするために、mysqladmin flush-privileges を実行してくださ い。


    Go to the first, previous, next, last section, table of contents.