グループとユーザの作成
rootで動かすことも可能ですが、やはり専用ユーザで、やるのがセキュリティ上好ましく思います。
# groupadd mysql
# mkdir /usr/local/mysql
# mkdir /usr/local/mysql/var
# useradd -g mysql -d /usr/local/mysql/var mysql
ホームディレクトリは、ソースからインストールしたときにデータファイルができる、/usr/local/mysql/varにしておきます。
解凍
$ tar zxfv mysql-4.0.12.tar.gz
インストール
$ cd mysql-4.0.12
$ ./configure \
--prefix=/usr/local/mysql \
--with-charset=ujis \
--with-extra-charset=all \
--with-mysqld-user=mysql
・
・
Thank you for choosing MySQL!(これが表示されたらconfigureは完了)
デフォルトで使用する文字コードを指定します。EUCを使う場合は、ujisです。
デフォルト以外のサポートしておきたい文字コードを指定しておきます。ここにカンマ区切りで指定してもいいですが、面倒ですし、使うときに指定し忘れに気づいて再度コンパイルということにならないためにも、allをしておきます。
MySQLデーモンを起動するユーザを指定します。先ほどのmysqlユーザです。
$ make
$ su
Password:
# make install
権限テーブルの生成
# ./script/mysql_install_db
これで、初期DBが/usr/local/mysql/var以下に作成されます。
※/etc/my.cnfがないか、注意しましょうRPMなどで、インストールされていて削除した場合に残っている可能性があります。私はこれのおかげで、初期DBが/var/lib/mysql以下にできてしまい、苦労しました(-_-X)
アクセス権の変更
インストール作業をrootで行っていますので、mysqlユーザへのアクセス権を変更します。
# chown -R root /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
# chgrp -R mysql /usr/local/mysql
起動
一度、正しく動いているかをテストするために起動します。
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# ps ax | grep mysql
5616 ttyp0 S 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
5635 ttyp0 S 0:00 [mysqld]
5637 ttyp0 S 0:00 [mysqld]
5638 ttyp0 S 0:00 [mysqld]
5639 ttyp0 S 0:00 [mysqld]
5640 ttyp0 S 0:00 [mysqld]
5641 ttyp0 S 0:00 [mysqld]
5642 ttyp0 S 0:00 [mysqld]
5643 ttyp0 S 0:00 [mysqld]
5644 ttyp0 S 0:00 [mysqld]
5645 ttyp0 S 0:00 [mysqld]
プロセスが起動しているのがわかります。
また、下記のように既存のDBを調べることでも、MySQLからの応答がみられます。
# ./bin/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
グローバル設定ファイル
設定ファイルのサンプルが、ソースを展開したディレクトリのsupport-files/以下にmy-XXXX.cnfという形(XXXXは環境による)でありますので、それを/etc以下にmy.cnfという名前でコピーをします。
# cp support-files/my-medium.cnf /etc/my.cnf
起動スクリプト
# cp support-files/mysql.server /etc/rc.d/init.d/mysql
# chmod 755 /etc/rc.d/init.d/msyql
これで、
# /etc/rc.d/init.d/mysql [start | stop]
で起動・停止ができるようになります。
おまけ
起動時に、"Starting mysqld・・・"と標準出力に出てきて邪魔なので、mysqld_safを編集して出ないようにします。
# /usr/local/mysql/bin/mysqld_safe
269行目に
echo "Starting $MYSQLD・・・"
とあるので、コメントにすれば、すっきりします。
自動起動
せっかくの起動スクリプトですので、自動で起動するようにします。
先ほどのディレクトリにいき、スクリプトを登録すれば、完了です。
# cd /etc/rc.d/init.d/
# chkconfig --add mysql
これで、登録されました。
# find /etc/rc.d/ -name "*mysql*"
./init.d/mysql
./rc0.d/K90mysql
./rc1.d/K90mysql
./rc2.d/S90mysql
./rc3.d/S90mysql
./rc4.d/S90mysql
./rc5.d/S90mysql
./rc6.d/K90mysql
と表示されれば問題ないはずです。
一応
# chkconfig --list | grep mysql
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
で確認しておきましょう。
再起動すれば、自動で立ち上がってるはずです。
RedHat8で上記のことをやると、
# chkconfig --list | grep mysql
mysql 0:オフ 1:オフ 2:オン 3:オフ 4:オン 5:オフ 6:オフ
となってしまい、思い通りに動いてくれません。
RedHat8では、
# chkconfig --add mysql
とやるところを
# chkconfig mysql on
とすることで、
# chkconfig --list | grep mysql
mysql 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
という、結果が得られます。
参考サイト
http://www.atmarkit.co.jp/flinux/rensai/mysql01/mysql01b.html