Sorry,this site is Japanese only!
 jseek.org is study memo

MySQL

フリーソフトの中では、最も高速なデータベースソフトウェアと言われるソフトウェア。
一昔前は、単純な機能の提供にとどめ、速度に重視を置いていたといわれますが
最近では、速度だけではなく、機能も徐々に豊富になっているデータベースソフトウェアです。

ということで、ここではMySQLのインストールについて記述します。 今回対象としているのは2005/10/25 現在の安定推奨版であるmysql-4.1.15です。

ユーザの追加

一般的にMySQLはmysql(グループ名もmysql)というユーザ権限にて動作をさせることが
多いようです。今回、こちらでもmysqlというユーザを利用するという前提でインストールを
行いますので、ここでmysqlというグループとmysqlと言うユーザを作成します。


 groupadd -g 104 mysql
 useradd -u 101 -g mysql -c "MySQL USER" \
 > -d /usr/local/mysql -s /bin/bash mysql


グループ番号、ユーザ番号はVine Linux 3.2にてRPMパッケージを導入したときのものを
参考に設定しています。また、ホームディレクトリを「/usr/local/mysql」としたのは、
この配下にソフトウェアを配置するためです。加えて、mysqlに対してシェルを
与えているのは、インストールをmysqlユーザの権限で行うためです。

インストール

単純にデータベースサーバとして動作し、SSLをサポートしない状態で
インストールを行います。また設定ファイルは「/usr/local/etc/mysql」以下に
配置されるものとし、同時にMySQLのサーバデーモンがmysqlというユーザ権限の
もと動作するものとします。また、ソースファイルは「/usr/local/src」に
おいてあるものとします。
(作業を行う一般ユーザ名は「mysql」、グループ名は「mysql」とします。)


 $ su -
 # cd /usr/local/etc
 # mkdir mysql
 # chown mysql:mysql mysql
 # cd /usr/local/src
 # tar xfvz mysql-4.1.15.tar.gz
 # chown -R mysql:mysql mysql-4.1.15
 # su - mysql
 $ cd /usr/local/src/mysql-4.1.15
 $ ./configure --prefix=/usr/local/mysql \
 > --sysconfdir=/usr/local/etc/mysql \
 > --with-mysqld-user=mysql \
 > --with-charset=ujis \
 > --with-extra-charsets=all
 $ make
 $ make install
 $ exit

今回はmysql-4.1.xxでのオプションとして、ベースディレクトリを指定する
「--prefix」オプション、設定ファイルのベースディレクトリを指定する
「--sysconfdir」オプション、そしてmysqlのサーバデーモンをどのユーザの
権限で動かすか指定する「--with-mysqld-user」、データベースで扱う基本
文字コードを指定する「--with-charset」、基本文字コード以外でオプションとして
文字コードを指定する「--with-extra-charsets」あたりを指定しておきます。
詳しいオプションの内容については「./configure --help」として
確認してみて下さい。ちなみにここでは基本文字コードとしてEUCを設定したいので
「ujis」、オプションでその他すべてを追加しています。

設定ファイルの準備

これでインストールは完了しましたので、ここでは、設定ファイルの
準備を行います。設定ファイルのサンプルは「$MYSQL_BASE/share/mysql」以下に
置かれています。今回はこの中のmy-small.cnfをコピーし、これを
編集して利用します。


 # su - mysql
 $ cd /usr/local/mysql/share/mysql
 $ cp my-small.cnf /usr/local/etc/mysql/my.conf
 $ cd /usr/local/etc/mysql
 $ vi /usr/local/etc/mysql/my.conf
 $ exit

データベースの初期化

ここまでできましたら、設定関連はすべて終了です。では、実際に
データベースを使うための準備を行っていきましょう。
まずはデータベースの初期化を行います。データベースの初期化は
「mysql」というユーザで実施する必要があることに注意して下さい。


 # su - mysql
 $ cd /usr/local/mysql/bin
 $ ./mysql_install_db --user=mysql
 $ exit

MySQLの起動

これで起動するための準備はすべて整いました。では、実際に次の コマンドによりMySQLを起動してみましょう。


 # /usr/local/mysql/bin/mysqld_safe --user=mysql &

ユーザアカウントの管理

まず、インストールしたての状態にはパスワードのないユーザがいますので、
これを削除します。ユーザに関する情報はmysqlというデータベースにあります。
ですので、以下のようにmysqlというデータベースに接続をしてから作業を
行う必要があります。作業が終わりましたらMySQLのデーモンを一度再起動する
必要があります。


 # /usr/local/mysql/bin/mysql -u root mysql
 mysql > delete from user where host='localhost' and user='';
 Query OK, 1 row affected (0.00 sec)

 mysql>\quit

 # /usr/local/mysql/bin/mysqladmin reload

上記の「Query OK, 1 row affected (0.00 sec)」という部分はMySQLが
処理に対して返した結果です。

次にインストールしたての状態ではrootのパスワードはありませんので、
これを設定します。


 # /usr/local/mysql/bin/mysqladmin -u root \
 > password ROOT_PASSWORD

ここでいう「ROOT_PASSWORD」とは設定するパスワードのことを指します。

MySQLのユーザアカウントの追加

MySQLのデータベースをユーザに対して提供するには、アカウントの追加が
必要となります。今回は、追加するユーザに対してすべての権限を
与える形でユーザの追加を実施します。ユーザの管理でもお話しました通り、
ユーザ情報はデータベースで管理されていますので、以下のように作業を行います。


 # /usr/local/mysql/bin/mysql -u root
 mysql > grant all privileges on *.* to USER@localhost \
 - > identified by 'PASSWORD' with grant option;
 Query OK, 0 rows affected (0.00 sec)

 mysql > grant all privileges on *.* to USER@'%' \
 - > identified by 'PASSWORD' with grant option;
 Query OK, 0 rows affected (0.00 sec)

 mysql > grant all privileges on *.* to USER@HOSTNAME \
 - > identified by 'PASSWORD' with grant option;
 Query OK, 0 rows affected (0.00 sec)

 mysql>\quit

上記の例ではホスト名「HOSTNAME」上に存在するアカウント「USER」に
対してパスワード「PASSWORD」を設定しすべての権限を与えています。
また、同様のコマンドを3度実行しているわけですが、まず「localhost」から
アクセスをうけたときの許可設定を、2番目は「任意のホスト」からアクセスを
受けたときの設定を、最後に「HOSTNAME」というマシンとしてアクセスを
受けた場合の設定を行っています。

mysqlアカウントのロック

これですべての作業は終了しましたので、セキュリティ保護のために mysqlアカウントを以下のようにロックしておきましょう。


 # passwd -l mysql

起動スクリプトの登録

すべての作業は終了していますが、MySQLを自動起動させたいひとのために
補足しておきます。MySQLはインストールの際、「$MYSQL_BASE/share/mysql」以下に
mysql.serverという名前でinitスクリプトを用意してくれています。
ですので、これを以下のようにしてコピー設定することにより、MySQLを
自動起動させることができるようになります。


 # cd /usr/local/mysql/share/mysql
 # cp mysql.server /etc/init.d/mysql
 # cd /etc/init.d
 # chkconfig --add mysql
 # chkconfig mysql on

システムへのライブラリの登録

すべての作業は終了していますが、MySQLを使う他のシステムへの配慮のため
補足しておきます。MySQLはインストールの際、「$MYSQL_BASE/lib/mysql」以下に
MySQLのライブラリがインストールされています。
ですので、これを「/etc/ld.so.conf」に追加して反映させておく必要があります。


 # cd /etc
 # vi ld.so.conf
 # ldconfig

以上でMySQLに関するすべての作業は終了です。