CentOS 5/MySQL 5.1系



前書き (執筆:2008/09/01)

このページではMySQLをMySQLのサイトからsrc.rpmを入手してインストールする方法について記載しています。

5.1系最新バージョンは 執筆時点で5.1.26-0 になります。
自分の環境に合わせて 6.0系 5.1系 5.0系 4.1系 4.0系 3.2系 を選択してください。

MySQLのサイトからsrc.rpmファイルを入手してインストールする際に注意する点があります。

  • dovecotのrpmパッケージを利用している方は依存関係が発生しますので注意が必要です。
  • src.rpmでインストールする方は、これら依存関係を処理できる方のみにお勧めします。

最新 CentOS 5.2にはMySQLは5.0系が用意されています。

  • つねに最新バージョンで運営を行いたい。
  • 運営の関係で他のMySQLバージョンを利用したい

等、特別な目的がある方以外は用意されているRPMパッケージの利用をお勧めします。
その際は下記のRPMパッケージをインストールしてください。

  • mysql-5.0.xx-x.el5.i386.rpm
  • mysql-server-5.0.xx-x.el5.i386.rpm

XOOPS Cube(以下:XOOPS)の運用を行う場合

XOOPS Cube Legacy 2.1.x もしくは XOOPS(Cube 2.0.x)のみでMySQLを利用される場合はMySQL 3.23 または 4.1.22 以上 をお勧めします。
この場合MySQLはソースファイル(tar.gz)からのインストールをお勧めします。

またPHPはel5.rpmパッケージだとPHP5が用意されています。
XOOPSでは、まだPHP5への動作が保障されていません。(ごく一部のモジュールのみがPHP5へ対応しています)
そのため、下記の方法の構築をお勧めします。

  • MySQL(3.23 later or 4.1.22 later or 5.0.27 later)、apache2+PHP4をソース(tar.gz)インストールする

最新版である XOOPS Cube Legacy 2.1.x を新規に構築される場合は 使用モジュールの互換性もありますが、下記の構成をお勧めします。
※事前に使用するモジュールのPHP5に対する互換性の確認を行ってください。

  • MySQL5.0系
  • apache2.2系
  • PHP5系

※PHP4は開発期限が発表(メンテナンスのみの対応)になっていますので、可能な限りPHP5への移行が望ましいです

src.rpmファイルの入手

最新のsrc.rpmファイルを取得します。
ここではIIJのミラーサーバーを使用して入手しています。

# wget ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/MySQL-5.1.26-0.glibc23.src.rpm

src.rpmファイルの展開・specファイルの作成

取得したソースファイルを元にspecファイルを作成します。

# rpm -ivh MySQL-5.1.26-0.glibc23.src.rpm

下記のように表示されます。

   1:MySQL                  警告: ユーザ mysqldev は存在しません - root を使用します
警告: グループ mysqldev は存在しません - root を使用します
警告: ユーザ mysqldev は存在しません - root を使用します
警告: グループ mysqldev は存在しません - root を使用します
########################################### [100%]


特別な構築を必要とする場合はここでspecファイルを修正してください。
参考までに主なデフォルト情報を記載しておきます。

  • バイナリファイルのディレクトリ:/usr/bin/
  • データディレクトリ:/var/lib/mysql
  • mysqldユーザー:mysql
  • mysqldグループ:mysql

etc

コンパイル(RPMパッケージの作成)

作成したspecファイルは CentOS 5.2 の場合 /usr/src/redhat/SPECS/ 配下にできています。
それを元にRPMを作成します。
コンパイルや各種の環境テストが行われます。
(かなり時間がかかります。)

# rpmbuild -ba /usr/src/redhat/SPECS/mysql-5.1.26-static.spec

下記のように表示されます。

実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.43038
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /usr/src/redhat/BUILD
+ rm -rf mysql-5.1.26-rc
+ /bin/mkdir -p mysql-5.1.26-rc
+ cd mysql-5.1.26-rc
+ /bin/gzip -dc /usr/src/redhat/SOURCES/mysql-5.1.26-rc.tar.gz
+ tar -xvvf -
drwxr-xr-x mysqldev/users    0 2008-07-01 07:51:22 mysql-5.1.26-rc/
drwxr-xr-x mysqldev/users    0 2008-07-01 07:50:49 mysql-5.1.26-rc/config/
drwxr-xr-x mysqldev/users    0 2008-07-01 07:50:50 mysql-5.1.26-rc/config/ac-macros/
-rw-r--r-- mysqldev/users 2016 2008-07-01 07:35:01 mysql-5.1.26-rc/config/ac-macros/alloca.m4
-rw-r--r-- mysqldev/users 1326 2008-07-01 07:35:01 mysql-5.1.26-rc/config/ac-macros/check_cpu.m4
   ・
   ・
   ・
   /usr/share/sql-bench/test-insert
   /usr/share/sql-bench/test-select
   /usr/share/sql-bench/test-transactions
   /usr/share/sql-bench/test-wisconsin
書き込み完了: /usr/src/redhat/SRPMS/MySQL-5.1.26-0.glibc23.src.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-server-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-client-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-test-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-devel-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-shared-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-embedded-5.1.26-0.glibc23.i386.rpm
書き込み完了: /usr/src/redhat/RPMS/i386/MySQL-debuginfo-5.1.26-0.glibc23.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.66493
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd mysql-5.1.26-rc
+ '[' /var/tmp/MySQL-5.1.26-build '!=' / ']'
+ '[' -d /var/tmp/MySQL-5.1.26-build ']'
+ rm -rf /var/tmp/MySQL-5.1.26-build
+ exit 0


作成されたRPMのパッケージは /usr/src/redhat/RPMS/i386/ 配下にできています。

インストール

ここでは下記のパッケージをインストールします。
必要に応じて他のパッケージを追加してください。

# rpm -ivh \
  /usr/src/redhat/RPMS/i386/MySQL-server-5.1.26-0.glibc23.i386.rpm \
  /usr/src/redhat/RPMS/i386/MySQL-shared-5.1.26-0.glibc23.i386.rpm \
  /usr/src/redhat/RPMS/i386/MySQL-client-5.1.26-0.glibc23.i386.rpm \
  /usr/src/redhat/RPMS/i386/MySQL-devel-5.1.26-0.glibc23.i386.rpm

下記の様に表示されます。

準備中...                ########################################### [100%]
   1:MySQL-devel            ########################################### [ 25%]
   2:MySQL-server           ########################################### [ 50%]

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h YOUR-DOMAIN password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/

Starting MySQL..[  OK  ]
   3:MySQL-shared           ########################################### [ 75%]
   4:MySQL-client           ########################################### [100%]

(注:ここでは本サーバーのドメインが表示されます。ここでは例として YOUR-DOMAIN を表示しています。)

初期処理

インストール時のメッセージで表示されたようにパスワードを登録します。

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h YOUR-DOMAIN password 'new-password'

 (注:ここでは本サーバーのドメインとして YOUR-DOMAIN を表示しています。)

rootアクセス時のパスワードを登録

# /usr/bin/mysqladmin -u root password 'パスワードを入力'

同様にユーザー:root ドメイン:(サーバードメイン)のパスワード登録

# /usr/bin/mysqladmin -u root -h YOUR-DOMAIN password 'パスワードを入力'

 (注:YOUR-DOMAIN の箇所をメッセージに表示されたドメインに置き換えてください。)

ここでエラー等表示されうまく登録できない場合、

# /usr/bin/mysql_secure_installation

対話式で初期処理ができます。

設定ファイル my.cnf

src.rpmでインストールを行うと、MySQLの設定ファイル(/etc/my.cnf)が作成されません。
my.cnfのベースとなる参考ファイルが

/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf

にできますので、運用形態に合ったものを /etc/my.cnf へコピーし内容を修正してください。

# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf


パスワード管理方法がMySQL 3.xシリーズで使用されていた旧式を使用する場合は
(CMSツール:XOOPS など)

[mysqld]
  ・
  ・
old_passwords=1

と追記する必要があります。

利用ユーザーの登録

実際にプログラムなどから利用する際のユーザー名とパスワード、権限を設定する必要があります。
時折、Web上で公開しているサンプルプログラムや記事に root をユーザーとして使っているのを見かけますが、これは危険すぎます。きちんとMySQL用のアクセスユーザーIDとパスワードを設定して使うようにしましょう。

  • root のまま使用しない。
  • OSに登録してあるユーザーID・パスワードと同じモノを登録して使用しない。

ユーザー登録

# mysql -u root -p
パスワード:
mysql> use mysql;
mysql> INSERT INTO user SET user="New-User", password=password("New-Password"), host="Host";
mysql> flush privileges;

 (注:New-User、New-Password、Host の箇所は各自置き換えてください。)
 (注:Host はプログラムまたはコマンドラインから使用する場合、サーバー名もしくは 127.0.0.1 を指定します。)

権限設定
権限範囲、データベース、テーブル名、ユーザ名を指定して設定。

mysql> GRANT ALL ON Database-Name.Table-Name TO User-Name@Use-Host;

 (注:Database-Name、Table-Name、User-Name、Use-Host の箇所は各自置き換えてください。)
権限の設定をここでは すべて許可の ALL を指定していますが、用途によっては CREATE TABLE を許可しない、DROP TABLE を許可しない など権限を絞って設定する必要もあります。

指定方法の詳細は MySQL ドキュメント - 12.5.1.3. GRANT 構文 にありますので、参考にしてください。

バックアップ・リカバリー

データのバックアップ・リカバリー方法について記載しておきます。
実際にはいくつか方法があります。
運用スタイルに合った手法を利用してください。
ここでは、一度、バキューム処理(最適化)したのち、フルデータをファイルに書き出す方法(mysqldump)を記載します。
またリカバリーについても、mysqldumpによって書き出したファイルを使う方法を記載します。
スクリプトなどを組んでcronで定期処理すると便利でしょう。

バキューム(最適化)方法

# mysqlcheck -A -o -uroot -pXXXXXXXX

注:XXXXXXXXは上項で設定したMySQL用のrootパスワードを入力します。

バックアップ方法(フルバックアップ)
(下記は backup + 日付 を記載したSQLファイルを作成しています。)

$ mysqldump -A -u root -pXXXXXXXX --opt -r backupYYYYMMDD.sql

注:XXXXXXXXは上項で設定したMySQL用のrootパスワードを入力します。
注:YYYYMMDDは日付を表しています。

バックアップ方法(個別バックアップ)

$ mysqldump -u root -pXXXXXXXX --opt -r 対象DB名 backup.sql

注:XXXXXXXXは上項で設定したMySQL用のrootパスワードを入力します。

リカバリー方法

$ mysql -B -uroot -pXXXXXXXX < backupYYYYMMDD.sql

注:XXXXXXXXは上項で設定したMySQL用のrootパスワードを入力します。
注:YYYYMMDDは日付を表しています。

シェルスクリプトで上記方法にてバックアップする簡単な方法を記載しておきます。

# vi bacup_mysql.sh

下記の内容を入力します。

#!/bin/sh
mysqlcheck -A -o -u root -pXXXXXXXX
mysqldump -A -u root -pXXXXXXXX --opt -r backup$(date +%Y%m%d).sql

注:XXXXXXXXは上項で設定したMySQL用のrootパスワードを入力します。

実行パーミッションを与えます。

# chmod +x bacup_mysql.sh

これを cron などに組み込めばバキュームした後、日付がついたバックアップファイルを作成してくれます。



Last-modified: 2015-04-23 (木) 15:33:15 (1304d)