FreeBSD4でBAMP環境を構築しよう - MySQL4のインストールと設定

初出:2005/04/09
更新:2005/04/09

1.MySQL4のインストール

<MySQLのバージョン>
 バージョン4.0.xと4.1.xは日本語の扱いに違いがあるため、既存の3.x/4.0.xユーザーは、4.0.xを使用し、新規ユーザーは4.1.xまたは4.0.xを使用するといいでしょう。詳しくは日本MySQLユーザー会のFAQをご覧下さい。

<重要>
 FreeBSD4とMySQLは、OSの標準スレッドライブラリの問題により、一部で相性がよくありません。そのため、これを回避する方法でインストールしなければなりません。

<回避方法>
下記の両方を使ってmakeします。

  1. スレッドライブラリに「LinuxThreads」を使います。
  2. コンパイラオプションに「-DHAVE_BROKEN_REALPATH」を付けます。

  3. ※これは、FreeBSD4の「realpath」関数がスレッドセーフではないためで、それを回避します。

<参考資料>

それから「実践ハイパフォーマンスMySQL」という本にもこの相性問題が載っています。

<インストール手順>
MySQL4のインストールはPortsから行います。
例としてMySQL4.0のインストールなら、
cd /usr/ports/databases/mysql40-server
に移動します。

次に、コンパイラオプションを変更するため、Makefileを開きます。
ee Makefile

以下の黄色い個所の1行を追加します。
.if defined(WITH_LINUXTHREADS)
CONFIGURE_ARGS+=--with-named-thread-libs='-DHAVE_GLIBC2_STYLE_GETHOSTBYNAME_R
CONFIGURE_ARGS+=-D_THREAD_SAFE -I${LOCALBASE}/include/pthread/linuxthreads
CFLAGS+=        -DHAVE_BROKEN_REALPATH
CFLAGS+=        -D__USE_UNIX98 -D_REENTRANT -D_THREAD_SAFE
CFLAGS+=        -I${LOCALBASE}/include/pthread/linuxthreads
これで保存してください。

LinuxThreadsオプション付きでmake installします。
make WITH_CHARSET=ujis WITH_XCHARSET=all WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes install
「WITH_CHARSET=ujis」 - MySQLで使う文字コードを指定します。ujisはEUC-JPのことです。
「WITH_XCHARSET=all」 - すべての文字コードをサポートします。
「WITH_LINUXTHREADS=yes」 - スレッドライブラリにLinuxThreadsを使用します。
「BUILD_OPTIMIZED=yes」 - 最適化してビルドします。
「BUILD_STATIC=yes」 - ライブラリを静的にリンクしてビルドします。
※「BUILD_XXXX」のオプションは、パフォーマンスの向上に役立ちます。

※注意
LinuxThreadsをインストールするには、FreeBSDに付いてくるソースファイルが必要です。「/usr/src」内が空だったり足りなかったりすると、makeに失敗してerrorが表示されます。FreeBSDインストール時のオプションで「Developer」を選択して、ソースコードをすべてインストールするようにしてください。

あとはインストールが終わるまでじっと待ちましょう。まずはLinuxThreadsがインストールされ、そのあとでMySQLがインストールされます。
なお、MySQLにはサーバー用とクライアント用がありますが、上記のサーバー用のPortsからインストールすれば、クライアント用も自動的にインストールされます。

インストールが終わったらrehashします。
rehash

Portsからインストールすると、「mysql」というアカウントと「mysql」というグループがFreeBSDに作成されます。MySQLサーバーはこのアカウントとグループの権限内で動作します。そのため、MySQLのデータが入っているディレクトリやデータベースファイルの所有者は、mysqlアカウントにしなければなりません(インストール時に自動でそうしてくれます)。

2.MySQLの自動起動

MySQLをOS立ち上げと同時に自動起動するように設定しましょう。

rc.confを開きます。
ee /etc/rc.conf

一番下に追加で記述します。
mysql_enable="YES"

では、MySQLを起動してみましょう。
自動起動スクリプトを使用すると便利です。
/usr/local/etc/rc.d/mysql-server.sh start

MySQLでよく使う起動オプション(自動起動スクリプトの場合)には以下のものがあります。
mysql-server.sh start起動する。
mysql-server.sh stop停止する。
mysql-server.sh restart再起動する。stopしてstartするのと同じ。

3.MySQLクライアントの使用

MySQLクライアントでサーバーに接続してみましょう。
mysql -u root -p
 「root」はMySQL用の管理者アカウントです(FreeBSDのアカウントとは違います)。 「-u」のうしろにアカウント名を指定します。「-p」を指定するとパスワードを聞いてきます(注意:-pのうしろにパスワードを指定してもエラーになります)。
 実行すると「Enter password:」と表示されます。初期状態では空欄なのでそのままエンターキーを押します。
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2887 to server version: 4.0.23

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

「mysql>」のところにSQL文を書きます。SQL分の最後はセミコロン「;」で終わるようにします。

今回はサーバーに正常接続できるかどうかのテストなので、とりあえず終了させましょう。
mysql>quit;
「Bye」と表示されて終了します。

4.管理者用パスワードの変更

MySQLの管理者用パスワードを変更しましょう。デフォルトでは空欄なので、セキュリティのためにも新しいパスワードを設定します。
rootでMySQLにログインして、以下のSQLを実行します。
mysql>SET PASSWORD FOR root=PASSWORD('new_password');
「new_password」のところに新しいパスワードを入れます。最後のセミコロンを忘れずに。
「Query OK, 0 rows affected (0.00 sec)」と表示されれば大丈夫です。

ちなみにエラーになると
ERROR 1064: You have an error in your SQL syntax. Check the manual that corresponds
to your MySQL server version for the right syntax to use near 'new_password)' at line 1
のように表示されます。要約すると「SQLに間違いがあるからマニュアルを確認しなさい」という意味です。どこが間違えてるかは、一番最後に「near 'new_password)' at line 1」と書いてあるとおり、1行目の「'new_password)'」の近く、にあると教えてくれています。

うまく変更できたら、新しいパスワードでログインしてみてください。

5.MySQLの管理

MySQLの管理は、「phpMyAdmin」というソフトをお勧めします。サイトは英語ですが、ソフトは完全に日本語化されています。ブラウザで管理するため、クライアントに専用ソフトをインストールする必要はありません。

戻る


Copyright © 2005 H'Imagine.
All rights reserved.