この章では、どのようにして MySQL を得、インストールするのかをのべます:
現在のバージョンとダウンロードの指示についての情報は MySQL ホームページ をチェックしてく ださい。
しかし、TcX のインターネット接続はそんなに速くありません; 下記に一覧され たミラーサイトの一つから実際にダウンロードすることをお勧めします。
悪いまたは遅れているミラーは webmaster@mysql.com に報告してくださ い。
ヨーロッパ:
北アメリカ:
南アメリカ:
アジア:
オーストラリア:
アフリカ:
我々は GNU Autoconf を使用していますので、MySQL は POSIX スレッ ドと C++ コンパイラが動作する全ての新しいシステムに移植可能です。(クライ アントコードのコンパイルだけは C++ を必要としますが、スレッドは必要ではありません。) 我々は自身のソフトウェアを、最初に Sun Solaris (現在は 2.5 & 2.6 & 2.7) 上で、より 小さい範囲は RedHat Linux 5.0 上で、使用し開発します。
MySQL は次の OS/スレッドパッケージの組み合わせで、コンパイルの 成功が報告されています。多くの OS では、ネイティブスレッドは最新バージョ ンだけで動作することに注意してください。
glibc
2.0.7
make のための最初の決定は、あなたが最新の開発リリースを使用したいのか、 または最新の安定リリースを使用したいのかです。
crash-me
とベンチマークテストで簡単にテストできるからです。
「10.8 Using your own benchmarks」節参照。
make のための2番目の決定は、ソース配布とバイナリ配布のどちらを使用した いかです:
MySQL の命名法では、リリース番号は3つの数値とサフィックスからな
ります。例えば、mysql-3.21.17-beta
のようなリリース名は次のように
解釈されます:
3
)はファイル形式を表します。全てのバージョン 3 リリー
スは同じファイルフォーマットを持ちます。バージョン 4 が現れた時、全ての
テーブルは新しい形式に変換する必要があります (このための良いツールはもち
ろん含まれます)。
21
)はリリースレベルです。通常は二つから選択します。一
つはリリース/安定ブランチで、もう一つは開発ブランチです。通常は両方とも
安定ですが、開発バージョンはきまぐれで、ドキュメントがなく、いくつかのシ
ステムではコンパイルに失敗します。
17
)はリリースレベル内のバージョン番号です。これは新し
い配布の度に増加します。普通はあなたの選択したリリースレベルの最新バージョ
ンを求めます。
beta
)はリリースの安定レベルを表します:
alpha
は、100% テストされていないいくつかの新しい大きなコードセク
ションが存在することを示し、知られているバグは News 節(通常はありませ
ん)に記述されています。 「D MySQL change history」節参照。多くの alpha リリースには新しいコマ
ンドと拡張もあります。
beta
は全ての新しいコードがテストされたことを意味します。大きな新
しいものは追加されません。知られているバグはありません。
gamma
は beta がしばらくして、正しく動くように見えるものです。こ
れは多くの他の会社がリリースと呼ぶものです。
MySQL の全てのバージョンは、比較的安全に使用できることを確かめ るため、我々の標準テストとベンチマークを通して実行されています。標準テス トは以前に見つかった全てのバグをチェックするように拡張されるため、テスト スイートはより良く保持されます。
全てのリリースは少なくても次のテストがされていることに注意してください:
crash-me
テスト
他のテストは我々の内部製品環境で最新の MySQL バージョンを我々が 少なくとも1つのマシンで使用することです。我々は動作のため 100ギガバイト 以上のデータを持ちます。
MySQL は TcX でかなり速く進化していて、我々はこれを他の MySQL ユーザに共有してもらいたいです。我々は、他の人が必要とし ていると思われるとても便利な機能を持った時に、リリースの作成を試みます。
我々は、実装が簡単な機能を要求するユーザの手助けも試みます。我々は、我々 のライセンスユーザが求めるものにも注目し、特に我々の拡張 email サポート 顧客が求めるものに注目して、彼らの手助けを試みます。
新しいリリースをダウンロードする必要はありません。News 節は、新しいリリー スが、あなたが本当に求める何かを持っているかどうかをあなたに教えます。 「D MySQL change history」節参照。
我々は MySQL の更新時には次のポリシーを使用します:
現在の安定リリースは 3.22 です; 我々はすでに 3.23 の開発に移行しています。 安定バージョンでもバグは まだ修正されます。バグ修正と ``行なわれるべき'' ことからも離れるような、 完全な凍結とは思っていません。``いくらか凍結'' は ``ほとんど確実に既に動 作しているものに影響しない'' 小さなことを追加するであろうことを意味しま す。
この節では、バイナリとソース配布のインストールで生成されるディレクトリの デフォルトのレイアウトを説明します。
バイナリ配布はアンパックすることによりインストールされ、インストール場所 はあなたが選択した場所(通常 `/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' | データベースとログファイル |
ソースインストールのレイアウトはバイナリインストールと次の点が異なります:
mysqld
サーバは `/bin' ではなく
`libexec' ディレクトリにインストールされます。
mysql_install_db
は `/usr/local/mysql/scripts' ではなく
`/usr/local/bin' ディレクトリにインストールされます。
次にさらに詳細な説明を行ないます:
MySQL バイナリ配布をインストールするには、次のツールが必要です:
gunzip
。配布の伸長のため。
tar
。配布の展開のため。GNU tar
は動くことが知られて
います。
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 インストール後の設定とテスト」節 に進んでくだ さい。
root
でインストールを行なう必要があります。)
tar
アーカイブとして提供
され、`mysql-VERSION-OS.tar.gz' のような名前を持ちます。ここで
VERSION
は数値(例えば、3.21.15
)で、OS
は配布が意図
しているオペレーティングシステムの種類を表します(例えば
pc-linux-gnu-i586
)。
shell> gunzip < mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql最初のコマンドは `mysql-VERSION-OS' という名前のディレクトリを生成 します。二番目のコマンドはそのディレクトリにシンボリックリンクを作成しま す。これはインストールディレクトリを `/usr/local/mysql' として、よ り簡単に参照させるためです。
shell> cd mysqlいくつかのファイルとサブディレクトリが
mysql
ディレクトリ中に見つ
けられます。インストール目的の最も重要なものは `bin' と
`scripts' サブディレクトリです。
mysqlaccess
を使用し、かつ MySQL 配布を非標準の場所に持
ちたい場合は、mysqlaccess
が mysql
クライアントを見つけよ
うとする場所を変更する必要があります。`bin/mysqlaccess' スクリプト
の 18 行目付近を編集してください。次のような行を探してください:
$MYSQL = '/usr/local/bin/mysql'; # path to mysql executableパスを
mysql
が実際にシステム上におかれている場所を示すように変更
してください。これを行なわないと、mysqlaccess
実行時に
broken pipe
エラーになるでしょう。
shell> scripts/mysql_install_db3.22.10以前のバージョンの MySQL は、
mysql_install_db
. 実行時に
MySQL を起動していましたが、もはやこれは起動しなくなりました
DBI
/DBD
インタフェースのサポートをインストールしたい
場合、 「4.10 Perl のインストールについて」節 を見てください。
support-files/mysql.server
をシステムのスタートアップファイルがある場所にコ
ピーしてください。さらなる情報は support-files/mysql.server
スクリプト自身
の中と、 「4.15.3 MySQL の自動起動と自動停止」節 に見つけられます。
全てがアンパックされてインストールされた後、配布の初期化とテストを行なう べきです。
MySQL サーバーは以下のコマンドで開始できます:
shell> bin/safe_mysqld &
「4.15 インストール後の設定とテスト」節参照.
(訳注:もし RedHat 以外の Linux を使用しており、.rpm を、自分が使用している パッケージ管理システムの管理下におきたい場合、alien : http://kitenet.net/programs/alien/ というツールを 使用します。これは RPM(Debian, Slackware) を自分が使用しているパッケージの形式に変換してくれます。 )
RPM を使用して MySQL をインストールすることを推奨します。
MySQL RPMS は RedHat 5.2 で作成していますが、
他の rpm
と glibc
をサポートしている Linux でも動作するでしょう。
RPM file での問題, 例えば Sorry, the host
'xxxx' could not be looked up
は、see 「4.6.3.1 Linux notes」節.
以下が使用するであろう RPM files です:
MySQL-VERSION.i386.rpm
MySQL サーバー。
ただ単に他のマシン上で走っている MySQL サーバーに接続するだけなら、
これは不要でしょう。
MySQL-client-VERSION.i386.rpm
MySQL クライアント標準プログラム。
このパッケージはほとんどの場合インストールすることになるでしょう。
MySQL-bench-VERSION.i386.rpm
ベンチマーク。perl msql-mysql-modules RPM が必要。
MySQL-devel-VERSION.i386.rpm
他の MySQL クライアント(perlモジュールのような)をコンパイルするのに必要な
ライブラリーとインクルードファイルを含みます。
MySQL-VERSION.src.rpm
上記全てのソース。これは他のアーキテクチャ用に RPM を作成する場合にのみ必要でしょう。
(例えば Alpha or SPARC).
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 バイナリ配布のインストール」節参照.
自分で書いたか、第三者が作成した MySQL クライアントプログラムをコンパイルする場合、
-lmysqlclient
オプションを使用してリンクされなければなりません。
また -L
オプションを指定して、ライブラリがどこにあるか指定する必要がある場合もあります。
例えばライブラリが `/usr/local/mysql/lib' にインストールされるならば、
リンクの時に -L/usr/local/mysql/lib -lmysqlclient
と指定します。
MySQL ヘッダーファイルを使用するクライアントのために、
あなたがそれらをコンパイルする時には、-I
オプションを指定しなければならない事もあります。
(例えば, -I/usr/local/mysql/include
)
以下のセクションでは特定のシステム上に起こると認められたいくつかの問題のを示します。
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
この問題は、以下のうちのどれかの方法で解決できます:
tar
)、代わりに
インストールします。
mysql_install_db --force
を実行します; これは mysql_install_db
に
かかれている resolveip
テストを実行しません。
また許可テーブル内でホスト名が使えなくなっています;
ホスト名でなく IP アドレスで登録します (localhost
は除).
もし --force
を持っていないような古い MySQL を使用しているなら、
エディターで、resolveip
テストを mysql_install
から削除します。
--user
の代わりに su
で起動。
Linux-Intel binary と MySQL RPM リリースは、もっとも速くなるように 調整されています。我々はもっとも早く安定したコンパイラーを常に使用しています。
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:
shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
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
.
ソースから MySQL を作成しインストールするためには次のツールが必 要です:
gunzip
。配布の伸張のため。
tar
。配布の展開のため。GNU tar
は動くことが知られて
います。
gcc
>= 2.8.1, egcs
>= 1.0.2, SGI C++,
SunPro C++ は働くことが知られているコンパイラのいくつかです。
libg++
は gcc
使用時には必要ではありません。gcc
2.7.x は、`sql/sql_base.cc' のような、完全に正当な C++ ファイルのい
くつかをコンパイルできないというバグがあります。gcc
2.7.x だけし
かなければ、MySQL をコンパイルできるように gcc
をアップ
グレードする必要があります。
make
プログラム。GNU make
は常に推奨され、時々は必要
とされます。問題があれば GNU make
3.75 以上を試すことをお勧めしま
す。
問題が起きたときは、mysql@lists.mysql.com に質問を投稿する時に
mysqlbug
を常に使用してください。問題がバグでないとして
も、mysqlbug
はあなたの問題を解決する助けになるであろうシステム情
報を収集します。mysqlbug
を使用しないと、あなたの問題の解決を得る
可能性が小さくなります! mysqlbug
は、配布のアンパック後に
`scripts' ディレクトリ内に見つけられます。 「2.3 バグや問題を報告する方法」節参照。
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バイナリを作成します
もし DBI
と Msql-Mysql-modules
Perl モジュールをインストールするなら、
bin/mysql_setpermission
スクリプトが使用する新しいユーザーを
追加することができます。
次にさらに詳細な説明を行ないます:
ソース配布のインストールには、次のステップに従い、それから インストール 後の初期化とテストのために 「4.15 インストール後の設定とテスト」節参照 に進んでください。
tar
アーカイブとして提供さ
れ、`mysql-VERSION.tar.gz' のような名前を持ちます。ここで
VERSION
は 3.22.21 のような番号です。
shell> gunzip < mysql-VERSION.tar.gz | tar xvf -このコマンドは `mysql-VERSION' という名前のディレクトリを作成します。
shell> cd mysql-VERSION
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 コンパイルの問題か?」節 を参照してください。
shell> make installこのコマンドは
root
として実行する必要があります。
shell> scripts/mysql_install_db注意: 3.22.10 より古い MySQL バージョンでは、
mysql_install_db
実行時に MySQL サーバが開始されましたが、
これはもはや真ではありません!
DBI
/DBD
インタフェースのサポートをインストールしたい
場合、 「4.10 Perl のインストールについて」節 を見てください。
support-files/mysql.server
をシステムのスタートアップファイルがあ
る場所にコピーしてください。さらなる情報は
support-files/mysql.server
スクリプト自身の中と、 「4.15.3 MySQL の自動起動と自動停止」節 に見つけられます。
全てがインストールされた後、配布の初期化とテストを行なうべきです。
MySQL サーバーを以下のコマンドで開始できます。
BINDIR
は safe_mysqld
がインストールされているディレクトリ
(`/usr/local/bin' by default) です:
shell> BINDIR/safe_mysqld &
コマンドがすぐに mysqld daemon ended
エラーで失敗する場合、
`mysql-data-directory/'hostname'.err' ファイルになんらかの情報を
見つけることができます。 よくあることとして、すでに他の mysqld
が
走っている場合などがあります。 「19.3 同一マシン上に複数の MySQL サーバーを走らせる」節参照.
「4.15 インストール後の設定とテスト」節参照。
時々、パッチは、メーリング・リストに流されたり、または 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
で止めます )
いくつかのシステムでは、現在実行しているものを止めない限り、
新しいバージョンをインストールできないようになっています。
configure
スクリプトは MySQL 配布をどのようにコンフィグ
するかを制御するための多くの処理を提供します。典型的には、
configure
コマンドラインにオプションを使用してこれを行ないます。
いくつかの環境変数を使用しても configure
に影響を与えることができ
ます。configure
がサポートするオプションの一覧は、次のコマンドを
実行してください:
shell> ./configure --help
良く使われる configure
オプションのいくつか以下に説明します:
--without-server
オプションを使用してください:
shell> ./configure --without-serverC++ コンパイラがなければ、
mysql
はコンパイルできません(これは C++
を要求するクライアントプログラムの一つです)。この場合、configure
から C++ コンパイラをテストするコードを削除でます。それから
./configure
を --without-server
オプションつきで実行してく
ださい。コンパイルステップは mysql
の作成を試みますが、
`mysql.cc' についての警告は無視できます。(make
が止まる場合、
エラーが発生しても残りの作成を継続するように make -k
を試してくだ
さい。)
configure
コマンドを使用してく
ださい:
shell> ./configure --prefix=/usr/local/mysql shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/data最初のコマンドはインストールプレフィックスを変更し、デフォルトの `/usr/local' ではなく `/usr/local/mysql' 配下にインストールし ます。次のコマンドはデフォルトのインストールプレフィックスを保存しますが、 データベースディレクトリのデフォルト位置(通常は `/usr/local/var')を 上書きし、
/usr/local/mysql/data
に変更します。
configure
コマン
ドを次のように使用します:
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sockファイル名は絶対パス名でないといけません。
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++
のリンクは試みません。
コンパイラやリンカが共有ライブラリ `libmysqlclient.so.#' を生成でき
ないというエラーになる場合、--disable-shared
オプションを
configure
に与えることで、この問題を回避できます。この場合、
configure
は共有ライブラリ libmysqlclient.so.#
を作成しま
せん。
NULL
項目(すなわち、NULL
が許されていない項目)に
DEFAULT
項目値を使用しないように MySQL をコンフィグでき
ます。これは、非 NULL
値を要求する全ての項目に値を明示的に指定し
なければ、INSERT
ステートメントはエラーを生成します。デフォルト値
の使用を抑えるには、次のように configure
を実行します:
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
--with-charset
オプションを
使用します:
shell> ./configure --with-charset=CHARSET
CHARSET
は次の一つです: big5
, cp1251
, cp1257
,
czech
, danish
,dec8
, dos
, euc_kr
,
gb2312
gbk
, german1
, hebrew
, hp8
,
hungarian
, koi8_ru
, koi8_ukr
, latin1
, latin2
,
sjis
, swe7
, tis620
, ujis
, usa7
,
win1251
or win1251ukr
.
「9.1.1 データとソートに使用されるキャラクターセット」節参照.
注意: 文字セットを変更したい場合は、コンフィグレーション間で make
distclean
を行なう必要があります!
サーバとクライアント間で文字を変換したい場合は、
SET OPTION CHARACTER SET
コマンドを調べるべきです。
「7.25 SET OPTION
構文」節参照.
警告: テーブルを生成した後に文字セットを変更する場合、
myisamchk -r -q
を全てのテーブルに実行する必要があります。そうでな
いと、インデックスは正しくソートされません。(これは、MySQL のイ
ンストール時、いくつかのテーブルの生成時、異なる文字セットを使用して
MySQL の再コンフィグ時、そして再インストール時に発生します。)
--with-debug
オプションを使用します:
shell> ./configure --with-debugこれにより、いくつかのエラーを見つけられる安全なメモリ割り当てが含まれ、 何が発生しているかについての出力を提供します。 「G.1 MySQL server のデバッグ」節参照.
Solaris 上で gcc
を使用した場合、一切警告無く全ての MySQL プログラムがきれいに作れます。
他のシステムではインクルードファイルの違いから警告が出るかもしれません。
MIT-pthreads を使用した際の警告は 「4.9 MIT-pthreads に関して」節 を参照してください。
他の問題は、以下をチェックしてください。
多くの問題の解決のために、再 configure が必要です。 あなたが再構成する必要があるならば、以下に気をつけてください:
configure
を一度実行した後に実行するならば、 configure
は
前に作った情報を利用します。この情報は `config.cache' に保存されます。
configure
は起動時にこのファイルを探し、もし存在するならば、
その中の情報が正しい物として読み込みます。
これはあなたが再コンフィグするならば無効になります。
configure
を実行するごとに、 make
を実行してコンパイルしなければなりません。
しかし、最初に、前のビルドでできたオブジェクト
(違うコンフィグオプションにより生成されたオブジェクト)を、消しておいてください。
古いコンフィグやオブジェクトファイルの使用を防ぐため、
configure
前に以下のコマンドを実行してください:
shell> rm config.cache shell> make clean
こうするかわりに、make distclean
としても構いません。
以下に、 MySQL をコンパイルする際に起こりやすい問題をあげておきます:
Internal compiler error: program cc1plus got fatal signal 11 or Out of virtual memory or Virtual memory exhaustedこの問題は、
gcc
がインライン展開で `sql_yacc.cc' をコンパイルするのに、
とても多くのメモリーを必要とするからです。
この場合、 configure
を --with-low-memory
オプション指定で実行します:
shell> ./configure --with-low-memoryこのオプションは、
gcc
を使用しているなら -fno-inline
オプションを
コマンドラインに加え、gcc
以外ならば -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++ コンパイラが動作しなかった理由を記録しています!
この問題を解決するに当たり、あなたが持っている C++ コンパイラーの代わりに
gcc
を使用しても構いません。CXX
環境変数に "gcc -O3"
としてみてください。
例えば:
shell> CXX="gcc -O3" ./configureこれは
gcc
が g++
と同様に C++ ソースをコンパイルするので動きますが、
libg++
か libstdc++
が標準ではリンクされません。
他の解決方法は、もちろん、g++
, libg++
, libstdc++
をインストールすることです。
make
のバージョンを上げてください:
making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment or make: file `Makefile' line 18: Must be a separator (: or pthread.h: No such file or directorySolaris と FreeBSD の
make
プログラムには問題があることが知られています。
GNU make
version 3.75 は動作確認されています。
CFLAGS
と CXXFLAGS
環境変数に
フラグを追加してください。同様に、 CC
と CXX
にコンパイラー名を
与えることもできます。
例えば:
shell> CC=gcc shell> CFLAGS=-O6 shell> CXX=gcc shell> CXXFLAGS=-O6 shell> export CC CFLAGS CXX CXXFLAGS「4.14 TcX binaries」節 にはフラグの定義がリストされています。 色々なシステム上で役に立つと思います。
gcc
コンパイラーをアップグレードしてください:
client/libmysql.c:273: parse error before `__attribute__'
gcc
2.8.1 は動作することが確認されていますが、
egcs
1.0.3a 以上をお勧めします。
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.yy", line xxx fatal: default action causes potential...これはあなたの
yacc
のバージョンが不十分であることを示しています。
bison
(the GNU version of yacc
) を代わりにインストールして使用する必要があります。
mysqld
か MySQL クライアントをデバッグしたいなら、
configure
を --with-debug
オプション付きで実行します。
そしてコンパイルし、新しいクライアントライブラリーでクライアントをリンクします。
「G.2 Debugging a MySQL client」節参照.
このセクションでは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」節参照.
--with-mit-threads
オプションで
configure
実行することによって、
MIT-pthreadsが使われることを強制することができます。
shell> ./configure --with-mit-threadsMIT-pthreadsを使う時、非ソースディレクトリで構築することはサポートされていませ ん。なぜなら、私たちはこのコードへ私たちの変更を最小にしたいからです。
AF_UNIX
プロトコルをサポートしません。
これは、もしあなたが使っている MIT-pthreads をコンパイルすれば、全ての接続は、
TCP/IP を使う(つまり少し遅くなる)ことを意味します。
もし、あなたが MySQL を構築したあとで、ローカルのサーバーに接続できないならば、
それはあなたのクライアントがデフォルトで Unix ソケットを使って
localhost
へ接続しようとしているのかもしれません。
明示的にローカルホスト名を指定するために、ホスト名指定のオプション
(-h
か --host
) で mysql
を使用して、TCP/IP 接続を試してみてください。
--without-server
を使ってクライアントコードのみを
ビルドすることを設定したならば、クライアントは MIT-othreads が使われているかいないか、
Unixソケット接続がデフォルトで使われているのかわかりません。なぜなら Unix ソケットは
MIT-pthreads 下では動作しないからです。また、あなたはそのようなインスタンスでは
-h
または --host
を使う必要があります。
--use-locking
オプション
を指定してサーバーに伝えることで、システムロックは使えるようになります。
bind()
コマンドは何のエラーメッセージ
なしにソケットへの bind に失敗することがあります。これは結果としてサーバーへの接続
失敗となります。たとえば、
shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)'これを解決するために
mysqld
サーバーを終了して、再起動してください。こ
れは私たちがサーバーダウンを強制して、すぐにリスタートさせようとしたときだけ起こ
りました。
sleep()
システムコールは SIGINT
(break)
では割り込みできません。 これは mysqladmin --sleep
を走らせているときにだけ
起こることがわかっています。
割り込みが発生してプロセスが停止する前に、あなたは終了させるための sleep()
コールを待たなく
てはなりません。
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(...)'
readline
を手に入れていません(これは必要では
ないのですが、おそらく誰かには興味があるでしょう)。
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
モジュールを例にしますが、他も同様にできます。
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -これは `Data-Dumper-VERSION' というディレクトリを作ります。
shell> cd Data-Dumper-VERSION
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
.
Win32 上に、 ActiveState Perl に MySQL DBD
モジュールを
インストールするには、以下のようにしなくてはなりません:
set HTTP_proxy=my.proxy.com:3128
C:\perl\bin\ppm.pl
DBI
のインストール(もし入っていなければ): install DBI
DBD::mysql:
インストール
http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd
もし上記のように出来なければ、代わりに MyODBC ドライバーを入れ、 MySQL サーバーに ODBC 経由で接続しなくてはなりません。
use DBI; $dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") || die "Got error $DBI::errstr when connecting to $dsn\n";
MySQL Perl 配布は DBI
,
DBD:MySQL
, DBD:ODBC
を含みます。
C:
で unzip します。 `C:\PERL' ができます。
perl -v
を実行して perl
をテストします。
DBI
/DBD
使用時の問題
もし Perl が ../mysql/mysql.so
モジュールが見つからないとメッセージを出した場合、
シェアードライブラリ `libmysqlclient.so' を取りこめなかったと考えられます。
以下のような方法で解決方法があります:
perl Makefile.PL
のかわりに perl Makefile.PL -static
としてコンパイルします。
libmysqlclient.so
を他のシェアードライブラリがあるところ(`/usr/lib' とか `/lib')にコピーします。
Linux
の場合、`/etc/ld.so.conf' ファイルに、libmysqlclient.so
があるディレクトリを書き加え、ldconfig -v
を実行します。
LD_RUN_PATH
(LD_LIBRARY_PATH
) 環境変数に 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 と MySQL が gcc
を使用して作られていない場合も原因としてあります。
この場合、両方を gcc
でコンパイルすることにより、ミスマッチを避けることができます。
ダイナミックリンクをサポートしていないシステム(like SCO)でPerlモジュールを使用したい場合、
DBI
と DBD-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
の出力は使用するコマンドを示します。
以下のセクションは、ソース配布から MySQL をインストールする際に 特定のシステム上に起こると認められた問題のいくつかを示します.
ソラリスでは 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
-mt
を CFLAGS
と CXXFLAGS
に加えます。
gcc
で MySQL をコンパイルするときに以下のエラーが出た場合、
これは 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'
この場合、新しい egcs
か gcc
でコンパイルします!
少なくとも 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' が存在するところに
セットした後、クライアントを実行します。
通常、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 `;'
これを解決するには、以下のうち一つを行います:
#define HAVE_TERM
行を `config.h' ファイルから消し、
make
を再実行します。
CFLAGS=-DHAVE_CURSES CXXFLAGS=-DHAVE_CURSES ./configure
とコンフィギャーします。
gcc
か egcs
を 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 のデバッグ」節参照.
SunOS 4 では MIT-pthreads が必要です。
このために、 GNU make
が MySQL のコンパイルに必要になります。
いくつかの SunOS 4 では dynamic libraries と libtool
に問題があります。
これを避けるために、以下のようにして configure
します:
shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static
readline
のコンパイル時、二重定義のワーニングが出ますが、
これは無視して構いません。
mysqld
をコンパイルする時、
いくつか implicit declaration of function
ワーニングがでますが、
無視して構いません。
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」節参照.
myisamchk
は libc.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
以下の方法で解決できます:
-Lpath
のかわりに)リンクします:
-Wl,r/path-libmysqlclient.so
libmysqclient.so
を `/usr/lib' にコピーします
LD_RUN_PATH
環境変数を `libmysqlclient.so' が存在する場所に設定します。
(クライアントを実行する前に設定します)
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
MySQL は libc
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
もし 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 version
は mysqld
を完全にクラッシュします!
また、問題のあるライブラリーを使用していると、 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 のデバッグ」節参照.
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
で確認できます。
いくつかの埋め込み関数, 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 から寄せられました。
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_lock
と mysys/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 できません。
次のコマンドを発行したとき、そのクライアントは死にます。
MySQL は最新の glibc
を使用した MkLinux で動作します。
(glibc
2.0.7 でテストしました).
Qube2 (Linux Mips) 上で MySQL を動作させるには、
最新の glibc
ライブラリでなくてはなりません(glibc-2.0.7-29C2
は動作することが分かっています)。 そして、 egcs
C++ compiler (egcs-1.0.2-9
以上) を使用しなくてはなりません。
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.
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.
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
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_mysqld
や mysql.server
ファイルに
記述しておきます。
安全で安定したシステムを入れるなら、 -STABLE
のカーネルだけを
使用してください。
To compile on NetBSD you need GNU make
. Otherwise the compile will crash
when make
tries to run lint
on C++ files.
On OpenBSD 2.5, you can compile MySQL with native threads with the following options:
CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
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
.
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
.
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.
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)
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/
./configure
in the `threads/src' directory and select
the SCO OpenServer option. This command copies `Makefile.SCO5' to
`Makefile'.
make
.
cd
to the `thread/src' directory, and run make
install
.
make
when making MySQL.
shell> CC="gcc -DSCO" CXX="gcc -DSCO" ./configureThe
-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)
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.
configure
command should work:
shell> CC="gcc -belf" ./configure --prefix=/usr/local/mysql --disable-shared
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:
mysqld
with -lgthreads -lsocket -lgthreads
.
www.mysql.com
) comes linked with
GNU malloc
. If you encounter problems with memory usage, make sure that
`gmalloc.o'
is included in `libgthreads.a' and `libgthreads.so'.
read()
,
write()
, getmsg()
, connect()
, accept()
,
select()
and wait()
.
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
.
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
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.
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!
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'
この節では Win32 上での MySQL の使用とインストールについて述べます。 これは MySQL Win32 配布物の `README' ファイルにも述べられています。
もし正式版 MySQL を持っていないなら、最初に以下から シェアウエアバージョンをダウンロードすべきです:
日本語版の評価版、および正式版の取得は以下になります: 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
)」節参照.
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.
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
(mysqld
や mysqld-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-nt
は mysqladmin
や 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' に出します。
MySQLは全ての Win32 プラットフォーム上で TCP/IP をサポートし、 NT 上で named pipe をサポートします。 デフォルトは、NT 上でローカルに接続するときにネームド・パイプが使用され、 そのほかの全ての場合で TCP/IP が使用されます。 ホスト名はどのプロトコルを使用するかを決めます:
Host nameprotocol | |
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 GRANT
と REVOKE
構文」節参照. 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
エラーになるのか」節参照.
SSH を利用して、Win32 から、どうやってリモートの MySQL に接続するかの説明です。 (by David Carlson).
local port: 3306
,
host: localhost
, remote port: 3306
にそれぞれセット。
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!
MySQL-Win32 バージョンは現在それ自体とても安定した(stableな)状態で供給されています。 MySQL-win32 バージョンは すべての機能がUNIXバージョンのMySQLと対応しています。 ただし、下記のような例外があります。
mysqld
を実行させるべきではあり
ません!
WinNT and Win98 don't suffer from this bug.
mysqladmin kill
は、スリープしている接続上では働かないはずです。
mysqladmin shutdown
は、中絶することができません。
DROP DATABASE
mysqladmin shutdown
で終了しなければなりません。
MY_TABLE
, my_table
両方を参照するからで
す。
SELECT * FROM my_table WHERE MY_TABLE.col=1;
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
エラー
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
Access denied for user: 'some-user@unknown' to database 'mysql'
エラーを得るなら、これはあなたの MySQL があなた
のマシンのホスト名を正しく解決できてないことを意味します。
これを修正するにはあな
たはファイル `\windows\hosts' を作り、以下の情報を書くことによってすべきです。
(注:Windows95,98には\Windowsフォルダ上にサンプルとして「lmhosts.sam」ファイルが
既にあるはずです)
127.0.0.1 localhost
ここにはWin32リリースを助けてくれる誰かのためにいくつかオープンになっている問題 があります:
MYSQL.DLL
server. This should include everything in
a standard MySQL server, except thread creation. This will make
MySQL much easier to use in applications that don't need a true
client/server and don't need to access the server from other hosts.
mysqld.cc
,
but it should be recoded to be more ``parameter'' oriented.
The tool should also be able to update the `\my.cnf' file if the user
would prefer to use this instead of the registry.
mysqld
をサービスとして --install
フラグで登録するとき、もしあなたがコマンドラ
インの上でデフォルトのオプションを同じく加えることができれば、それは、良いだろ
う。この問題は差し当たって、 `C:\my.cnf' ファイルを代わりにすることで代用していま
す。
mysqld
デーモンは新しい接続を受け入れません。私たちは、これがWin95、TCP/IP、また
は、 MySQL が持つ問題であるかどうかわかりません。
mysqld
を終了させることができればほんとうに親切でしょう。
今のところ、あなたは mysqladmin shutdown
を使わなければなりません。
mysql
のコマンドラインツールとして readline
をWin32に移植しませんか?
mysql
、mysqlshow
、mysqladmin
、および、mysqldump
)のGUI
バージョンがあればいいでしょうねぇ。
mysqladmin kill
を使用して開かれたスレッドを終
了できるのですが。
mysqld
はデフォルトロケールではなく、常に「C」ロケールで起動します。私たちは、
ソート順序のために、 mysqld
に、現在のロケールを使わせたい。
.DLL
での実装
他のwin32に限定された症状は MySQL-Win32 ディストリビューションに同梱されている `README' ファイルで説明されています。
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";
サービスとして、TcX は MySQL のバイナリ配布を提供しています。 これらのコンパイルは TcX 内部でおこなったり、我々にマシンの アクセスを提供してもらっている顧客のマシン上で行っています。
これらの配布物は scripts/make_binary_distribution
で作成され、
以下のコンパイルオプションで調整されています。
gcc
2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --disable-shared
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
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
gcc
2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
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
gcc
2.7-95q4
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
gcc
2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
gcc
2.8.1
CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
gcc
2.8.0
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
gcc
2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
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 製です。
初めて 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 のソースディレクトリです。
コマンドは本節といかに続く節で説明しますが、BINDIR
は
mysqladmin
や safe_mysqld
がインストールされたディレクトリを示します。
バイナリ配布を使用している場合、BINDIR
はバイナリ配布の `bin' ディレクトリになります。
ソースからインストールした場合、BINDIR
は、configure
で特別指定しない限り、
`/usr/local/bin' です。
EXECDIR
は mysqld
サーバーのインストール先です。
バイナリ配布を使用している場合、これは BINDIR
ディレクトリと同一になります。
ソースからインストールした場合、`/usr/local/libexec' です。
Testing is described in detail below:
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
を実行しないで起動した場合に、このエラーがおきます。!
root
で mysql_install_db
を実行する必要があるとあなたは思うかもしれません。
しかし、 MySQL は root
以外のユーザーで起動できます。
データベースディレクトリがサーバーを起動したユーザに対して読み書きが許可されていれば良いのです。
MySQL を一般ユーザーで走らせる方法は 「18.7 一般ユーザで MySQL を動かす方法」節.
もし mysql_install_db
で問題が出たら、
「4.15.1 mysql_install_db
実行時の問題」節. を参照のこと。
mysql_install_db
スクリプトを走らせるにはいくつか選択があります:
mysql_install_db
を走らせる前に編集して、許可の初期状態を変更してもいいでしょう。
これは多くのマシンに同じ特権設定をして MySQL をインストールする際に
役立ちます。 この場合、いくつかの INSERT
構文を mysql.user
と
mysql.db
テーブルにたいして追加するようにするだけですみます!
mysql -u root mysql
で MySQL root
ユーザーで接続して直接許可テーブルを変更する SQL 文を実行します。
mysql_install_db
を編集した後にそう思うかもしれません。
shell> cd mysql_installation_directory shell> bin/safe_mysqld &If you have problems starting the server, see 「4.15.2 MySQL サーバー起動時の問題」節.
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
オプションで起動することにより得られます。
shell> BINDIR/mysqladmin -u root shutdown
safe_mysqld
か mysqld
を直接実行します。
例えば:
shell> BINDIR/safe_mysqld --log &
safe_mysqld
が失敗するなら、 MySQL のインストールディレクトリーから実行してみてください。
もしそれでも起動しないなら、 「4.15.2 MySQL サーバー起動時の問題」節 を参照のこと。
shell> BINDIR/mysqlshow +-----------+ | Databases | +-----------+ | mysql | +-----------+ shell> BINDIR/mysqlshow mysql Database: mysql +--------------+ | Tables | +--------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +--------------+ shell> BINDIR/mysql -e "select host,db,user from db" mysql +------+--------+------+ | host | db | user | +------+--------+------+ | % | test | | | % | test_% | | +------+--------+------+他のプラットフォームで MySQL のパフォーマンスを比較するために `sql-bench' にベンチマークがあります。 `sql-bench/Results' ディレクトリには、他のデータベースやプラットフォームで ベンチを実行した結果があります。 全てのテストを実行するには、以下のようにします:
shell> cd sql-bench shell> run-all-testsRPM バイナリ配布には `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' ファイルに書き出されます。
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 バグや問題を報告する方法」節参照.
mysqld
daemon running
mysql_install_db
を実行する必要はありません。
mysql_install_db
を実行するのは MySQL を初めてインストールした後、
たった一回だけです。
mysqld
daemon doesn't work when one daemon is running
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
に指定します。
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
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
を実行します。
通常 mysqld
サーバーの起動は、以下の三つの方法のうち一つで行います:
mysql.server
による起動。このスクリプトはシステムの起動時、停止時に使われます。
詳細は 「4.15.3 MySQL の自動起動と自動停止」節
safe_mysqld
による起動。これは mysqld
への適切なオプションを決定し、
それらのオプションでサーバーの起動を試みます。
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_mysqld
は `./bin', `./data' ディレクトリ(バイナリ配布物の場合)、
あるいは `./libexec', `./var' ディレクトリ(ソース配布物の場合)を探します。
あなたが MySQL をインストールしたディレクトリ(例えば `/usr/local/mysql' ディレクトリ)
から safe_mysqld
を実行した場合、この条件に適合します。
safe_mysqld
は絶対パスでそれらを探します。
典型的なディレクトリは `/usr/local/libexec' と `/usr/local/var' です。
実際のディレクトリは safe_mysqld
がある配布物が作成されるときに決められます。
これらは MySQL がインストールされた標準のパスに正しく配置されていなければなりません。
safe_mysqld
はサーバーとデータベースを自分が起動されたディレクトリからの相対パスで探します。
よって、 safe_mysqld
を MySQL のインストールディレクトリから起動する限りは、
MySQL バイナリ配布物を自分の好きなところにインストールできます。
その場合の起動は:
shell> cd mysql_installation_directory shell> bin/safe_mysqld &
もし safe_mysqld
が MySQL インストールディレクトリから起動しても失敗するなら、
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 を 使用するようにして作ったシステムにだけ起こります。
mysql.server
スクリプトは start
, stop
引数を指定することにより
サーバーを起動、停止できます:
shell> mysql.server start shell> mysql.server stop
mysql.server
は MySQL インストールディレクトリの `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
)」節参照.
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 |
DATADIR
は MySQL データディレクトリです (普通
`/usr/local/mysql/data' or `/usr/local/var').
このディレクトリはconfigure時に決定されており、 --datadir
を mysqld
起動時に指定しても変更されません。
(サーバーはコマンドラインの引数を処理する前にオプションファイルを探します。
よって、--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' ディレクトリを探してください
(ここで DIR
は MySQL がインストールされたディレクトリのパス名で、普通は `/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 クライアントプログラムのコードを参考にしてください。
MySQL 形式とデータファイルは、MySQL が同じベースバージョ
ンである限り、同じアーキテクチャ上の異なるバージョン間でいつでも移動でき
ます。現在のベースバージョンは 3 です。MySQL のリコンパイルによっ
て文字セットが変更された場合(これはソート順も変更します)、全てのテーブル
に myisamchk -r -q
を行なう必要があります。そうしなければ、インデッ
クスが正しい順になりません。
もしあなたが神経質だったり新しいバージョンを恐れている場合、いつでもあな
たの古い mysqld
を mysqld
-'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 の
アップグレード後にコアダンプする兆候に気づいた場合は、特に
そうしてください。
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 にアップグレードするときに、注目する必要があるものを列挙します:
INNER
と DELAYED
は、予約語になりました。
FLOAT(X)
は本当の floating point 型になりました。
DECIMAL(length,dec)
the length argument no
longer includes a place for the sign or the decimal point.
TIME
文字列は以下のフォーマットのいずれかでなければなりません:
[[[DAYS] [H]H:]MM:]SS[.fraction]
か
[[[[[H]H]H]H]MM]SS[.fraction]
LIKE
は、同一文字の比較 '='
ルールを使用して、
比較を行うようになりました。
もし古い比較方法にするならば、 MySQL を CXXFLAGS=-DLIKE_CMP_TOUPPER
フラグでコンパイルします。
REGEXP
は、通常の文字列(非 binary) では、ケース非依存になりました。
MyISAM
テーブル(.MYI
) の検査・修復には、myisamchk
を使用します。
isamchk
は ISAM(.ISM
) テーブル用に使用します。.
mysqldump
を行いたいならば、
--opt
や --full
オプションを mysqldump
に指定してはいけません。
DATE_FORMAT()
をチェックしてください。
フォーマット文字列には `%' 文字が必要になりました。
mysql_fetch_fields_direct
が関数になり (今まではマクロだったのが)、
MYSQL_FIELD
型ではなく MYSQL_FIELD
ポインター型を返します。
mysql_num_fields()
は、 MYSQL*
object をもはや使うことができません。
(これは今、 MYSQL_RES*
を引数に取る関数になりました)。
代わりに、 mysql_field_count()
を使用すべきです。
MySQL
3.22 では, SELECT DISTINCT ...
の出力は
ほとんどいつもソートされました。 3.23 では, ソートを行った結果を得るには
GROUP BY
か ORDER BY
を使用しなくてはなりません。
SUM()
は 0 の代わりに NULL
を返すようになりました。
これは ANSI SQL 準拠です。
CASE, THEN, WHEN, ELSE and END
3.21 と 3.22 の間には互換性に影響する変更はありません。DATE
型を
伴って生成された新しいテーブルは、日付の格納に新しい方法を使用することだ
けが pitfall です。これらの新しいフィールドに古いバージョンの
mysqld
からアクセスすることはできません。
MySQL 3.22
インストール後、新しいサーバを開始して、
mysql_fix_privilege_tables
スクリプトを実行すべきです。これは
GRANT
コマンドを使用するために必要な特権を追加します。これを忘れ
ると、ALTER TABLE
や CREATE/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()
関数を有効にします。
既に 3.20.28 より前のバージョンが稼働していて、3.21.x に変更したい場合は、 次を行なう必要があります:
safe_mysqld --old-protocol
で mysqld
3.21 サーバを起動すれ
ば、3.20 配布からのクライアントでそれを使用できます。この場合、新しいク
ライアント関数 mysql_errno()
はサーバのエラーは何も返さず、
CR_UNKNOWN_ERROR
だけを返します (ただしクライアントのエラーについ
ては働きます)。そして サーバは古い password() チェックを新しいものの代わ
りに使用します。
mysqld
に --old-protocol
オプションを使わない場合、
次の変更をする必要があります:
mysql.user
テーブル内の password
フィールドを
CHAR(16)
に変換するために、スクリプト
scripts/add_long_password
を実行する必要があります。
mysql.user
テーブル内に再配置する必要がありま
す(31ビットパスワードの代わりに、62ビットを得るために)。
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
(user
と password
引数の順番が変更されました)。
「20.5.1.1 The DBI
interface」節参照.
次の変更は古いアプリケーションでのクエリに影響します:
HAVING
は現在 ORDER BY
節より前になければいけません。
LOCATE()
へのパラメータは交換されました。
DATE
,
TIME
そして TIMESTAMP
です。
もし、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
データベース転送を実行するために、mysqldump
と mysqlimport
も使用できます。大きなテーブルでは、これは単純な mysqldump
の使用
よりもとても速いです。次に示すコマンドでは、DUMPDIR
は
mysqldump
からの出力を格納するために使用するディレクトリの完全な
パス名を表わしています。
まず、出力ファイルのためのディレクトリを作成して、データベースをダンプし ます:
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.