(最終更新日時:2010-03-09 23:47:21)
オープンソースのリレーショナルデータベース管理システム(RDBMS)
MySQL Community Server を Xen による仮想サーバー上にソースからコンパイルしてインストールします。
仮想サーバーの構築は、
Xen による仮想サーバーの構築 を参照してください。
ダウンロード
MySQL Developer Zone ダウンロードサイト(
http://dev.mysql.com/downloads/)から次のファイルをダウンロードします。
| ・ |
MySQL Community Server 5.1.44 Source Code
Generic Linux, Compressed TAR archive |
: |
mysql-5.1.44.tar.gz |
| (※)下線部は 2010/02/19 現在の最新リリース番号です。 |
当サイトでは、Domain0 に MySQL クライアントのインストールを行うことを考慮し、MySQL 仮想サーバーの NFS 共有ディレクトリにダウンロードしています。
$ # Domain0 から MySQL マシンにログインします
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ # MySQL Developer Zone ダウンロードサイトからダウンロードします
$ cd /home/exports
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.44.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
$ exit # MySQL マシンからログアウトします
仮想サーバーへのインストール準備
当サイトの
MySQL サーバーは、Xen による仮想サーバー上で稼動していますが、
仮想サーバー構築時
には最小限のパッケージしかインストールしていません。
そこで、まず MySQL サーバーをソースからコンパイル、およびインストールする際に必要なパッケージをインストールします。
$ # Domain0 から MySQL マシンにログインします
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ su -
パスワード:root ログインパスワード
# yum -y install gcc # C コンパイラー gcc のインストール
# yum -y install gcc-c++ # C++ コンパイラー gcc-c++ のインストール
# yum -y install ncurses-devel # 端末仕様ライブラリ開発ツール ncurses-devel のインストール
# yum -y install make # プログラムビルドツール make のインストール
# exit
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
インストール
MySQL マシンにログインして、MySQL の実行用グループとユーザーを作成します。
(※ディレクトリ /var/mysql は、LVM ボリュームとしてインストール時にマウント指定しています)
$ # Domain0 から MySQL マシンにログインします
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ su -
パスワード:root ログインパスワード
# groupadd -g 27 mysql
# useradd -u 27 mysql -M -g mysql -s /sbin/nologin -d /var/mysql/data
# mkdir /var/mysql/data
# chown mysql.mysql /var/mysql/data
# chmod 750 /var/mysql/data
# # /usr/local/src ディレクトリのアクセス権限を変更しておきます
# chgrp users /usr/local/src
# chmod 775 /usr/local/src
# exit
/usr/local/src ディレクトリでアーカイブを展開し、コンパイルおよびインストールを行います。
$ cd /usr/local/src
$ tar zxvf /home/exports/mysql-5.1.44.tar.gz
$ cd mysql-5.1.44
$ ./configure \
> --localstatedir=/var/mysql/data \ # データベースの格納先を指定します
> --enable-thread-safe-client \ # スレッドセーフなクライアントライブラリを作成します
> --with-low-memory \ # コンパイル時のメモリ/スワップスペース不足対策です
> --with-charset=utf8 \ # デフォルトの文字セットに UTF-8 を指定します
> --with-extra-charsets=all \ # すべての文字セットを使用可能にします
> --with-ssl \ # SSL 接続を有効にします
> --with-mysqld-user=mysql # 起動ユーザーを mysql にします
$ make
$ sudo make install
パスワード:自身のログインパスワード
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
設定
MySQL マシンにログインして、各定義ファイルの設定を行い、MySQL サーバーを起動します。
$ # Domain0 から MySQL マシンにログインします
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ su -
パスワード:root ログインパスワード
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
:
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8 # mysql コマンドの文字セットを UTF-8 にしています
prompt=[\d]> \ # プロンプトに操作中のデータベース名を表示するようにしています
[myisamchk]
:
データベースを初期化します。
# cd /var/mysql/data
# su mysql -s /bin/bash
$ /usr/local/bin/mysql_install_db --user=mysql
$ exit
自動起動設定を行い、MySQL サーバーを起動します。
# cp /usr/local/share/mysql/mysql.server /etc/rc.d/init.d/mysql
# chkconfig mysql on
# service mysql start
# exit
ユーザー設定を行います。
$ mysqladmin -u root password "パスワード" # MySQL ユーザー root のパスワードを設定します
$ mysql -u root -p
Enter password: 設定した MySQL ユーザー root のパスワード
:
[(none)]> USE mysql; -- 操作対象を MySQL の管理データベースにします
Database changed
-- パスワードのない初期ユーザを削除します
[mysql]> DELETE FROM user WHERE password = '';
[mysql]> FLUSH PRIVILEGES;
[mysql]> quit
Bye
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
MySQL クライアントのインストール
Domain0 から MySQL サーバーへリモートでアクセスするため、Domain0 に MySQL クライアントをインストールします。
MySQL マシンの共有ディレクトリに MySQL ソースファイルが存在します。
$ # Domain0 で MySQL マシンの共有ディレクトリをマウントします
$ sudo mkdir -p /mnt/mysql
パスワード:自身のログインパスワード
$ sudo mount -t nfs actmysql.server.localnet:/home/exports /mnt/mysql
$ # MySQL クライアントのインストールを行います
$ cd /usr/local/src
$ tar zxvf /mnt/mysql/mysql-5.1.44.tar.gz
$ cd mysql-5.1.44
$ ./configure \
> --without-server \ # クライアントのみインストールします
> --enable-thread-safe-client \ # スレッドセーフなクライアントライブラリを作成します
> --with-low-memory \ # コンパイル時のメモリ/スワップスペース不足対策です
> --with-charset=utf8 \ # デフォルトの文字セットに UTF-8 を指定します
> --with-extra-charsets=all \ # すべての文字セットを使用可能にします
> --with-ssl # SSL 接続を有効にします
$ make
$ sudo make install
パスワード:自身のログインパスワード
$ # 共有ライブラリに mysql ライブラリのリンクを登録します
$ sudo vi /etc/ld.so.conf.d/mysql.conf
パスワード:自身のログインパスワード
/usr/local/lib/mysql
$ sudo /sbin/ldconfig
データベースの操作
MySQL マシンにログインして、新規にユーザーデータベースを作成し、アクセス権限を設定します。
$ # Domain0 から MySQL マシンにログインします
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ mysql -u root -p
Enter password: MySQL ユーザー root のパスワード
:
-- 例として、ユーザーデータベース testdb を作成します
[(none)]> CREATE DATABASE testdb;
Query OK, 1 row affected (0.00 sec)
-- さらに、testdb を管理するユーザーとして testuser を作成します
[(none)]> GRANT ALL ON testdb.*
-> TO testuser@localhost
-> IDENTIFIED BY 'testuser@localhost に設定するパスワード';
Query OK, 0 rows affected (0.00 sec)
-- リモートでデータベースを操作する場合は、リモートクライアント毎に管理ユーザーやアクセスユーザーを登録する必要があります
-- リモートクライアントの指定は以下の方法で行います
-- ホスト名 : (例) gateway.server.localnet
-- IP アドレス : (例) 192.168.201.11
-- 192.168.201.0/255.255.255.0
-- ただし 192.168.201.0/255.255.255.240 は NG
-- マスク可能なアドレス長は 8, 16, 24, 32 bit のみになります
-- ワイルドカード : (例) "%.server.localnet"
-- "192.168.201.%"
-- ワイルドカード文字等の記号文字を使用する場合は、引用符でくくります
-- 以下は、ホスト名 gateway.server.localnet で指定しています
[(none)]> GRANT ALL ON testdb.*
-> TO testuser@gateway.server.localnet
-> IDENTIFIED BY 'testuser@gateway.server.localnet に設定するパスワード';
Query OK, 0 rows affected (0.00 sec)
[(none)]> quit
Bye
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
作成したユーザーデータベースを Domain0 から操作します。
$ mysql -h actmysql.server.localnet -u testuser -p testdb
Enter password: MySQL testuser のパスワード
:
[testdb]> ... SQL etc. ...
:
[testdb]> quit
データベースのバックアップを行います。
$ # Domain0 から MySQL マシンにログインします
$ # MySQL マシンにログインせず、Domain0 から -h ホスト名 オプションを指定して操作することもできます。
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ # 全データベースを backup.sql にフルバックアップします
$ mysqldump -A -Q --flush-privileges -u root -p > backup.sql
Enter password: MySQL ユーザー root のパスワード
$ # データベース testdb を backup_testdb.sql にバックアップします
$ mysqldump -B -Q --add-drop-database -u root -p testdb > backup_testdb.sql
Enter password: MySQL ユーザー root のパスワード
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
バックアップファイルからデータベースを復元(リストア)します。
$ # Domain0 から MySQL マシンにログインします
$ # MySQL マシンにログインせず、Domain0 から -h ホスト名 オプションを指定して操作することもできます。
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ # バックアップファイル backup.sql から復元します
$ mysql -u root -p < backup.sql
Enter password: MySQL ユーザー root のパスワード
$ mysql -u root -p < backup_testdb.sql
Enter password: MySQL ユーザー root のパスワード
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
同一サーバー内にバックアップ用データベースを新たに作成し、そのデータベースにバックアップします。
$ # Domain0 から MySQL マシンにログインします
$ # MySQL マシンにログインせず、Domain0 から -h ホスト名 オプションを指定して操作することもできます。
$ ssh user1@actmysql.server.localnet
Enter passphrase for key '/home/users/domain0/.ssh/id_rsa': 鍵のパスフレーズ
$ mysql -u root -p
Enter password: MySQL ユーザー root のパスワード
:
-- バックアップ用データベース testdbback を作成します
[(none)]> CREATE DATABASE testdbback;
Query OK, 1 row affected (0.00 sec)
-- testdbback の管理ユーザーを既存の testuser にします
[(none)]> GRANT ALL ON testdb.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.00 sec)
[(none)]> quit
Bye
$ # データベース testdb を testdbback にバックアップします
$ # 異なるデータベースにリストアしますので -B --add-drop-database オプションは指定しません
$ mysqldump -Q -u root -p testdb > backup_testdb.sql
Enter password: MySQL ユーザー root のパスワード
$ mysql -u root -p testdbback < backup_testdb.sql
Enter password: MySQL ユーザー root のパスワード
$ rm backup_testdb.sql
$ exit # MySQL マシンからログアウトします
Connection to actmysql.server.localnet closed.
メジャーバージョンアップ
インストール済 MySQL のメジャーバージョンを上げる場合は、以下の手順で行います。
$ # バージョンアップ版のコンパイルを行います
$ cd /usr/local/src
$ tar zxvf /home/exports/mysql-x.x.xx.tar.gz
$ cd mysql-x.x.xx
$ ./configure \
: # インストール手順の configure を行います
$ make
$ # make install 前にバックアップを取得します
$ mysqldump -A -Q --opt -u root -p > バックアップファイル名
Enter password: MySQL ユーザー root のパスワード
$ # サービスを停止します
$ su -
パスワード:root ログインパスワード
# service mysql stop
# # 念のためデータベースフォルダごとバックアップします
# mv /var/mysql/data /var/mysql/backup
# # 新バージョンのデータベースフォルダを作成します
# mkdir /var/mysql/data
# chown mysql.mysql /var/mysql/data
# chmod 750 /var/mysql/data
# # バージョンアップ版のインストールを行います
# make install
# # 定義ファイルを編集します
# cp -f /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
: # インストール手順の定義ファイルの編集を行います
# # データベースを初期化します
# cd /var/mysql/data
# su mysql -s /bin/bash
$ /usr/local/bin/mysql_install_db --user=mysql
$ exit
# # サービスを開始します
# service mysql start
# # リストアを行います
# mysql -u root < バックアップファイル名
# mysql -u root
:
mysql> FLUSH PRIVILEGES;
:
mysql> exit
Copyright © 2004-2010 System House ACT. All Rights Reserved.