mysql install on chroot.
メモ書き、清書は後。一応でけたのでメモ書き。
目的は、mysqlをchrootで動かす。mysql 5.0.51を使用。OSはFreeBSD 6.2。参考=ネットワークセキュリティHack:
ネットワークセキュリティHacks―プロが使うテクニック&ツール100選
- 作者: アンドリューロックハート,Andrew Lockhart,渡辺勝弘,黒川原佳,松田綾爾,鶴岡信彦,新井貴之,鈴木和也
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/01
- メディア: 単行本
- 購入: 1人 クリック: 9回
- この商品を含むブログ (39件) を見る
P.S
ネットワークセキュリティHackの2版が出てたのね・・・orz
mysql をダウンロード。とインストール。
インストール先は、/usr/local/mysql/mysqlになり、chrootでは下記の様なディレクトリ構成にするとする。なお、tmpはmdデバイスを使用してます。
total 13 drwxr-xr-x 7 mysql mysql 512 Jan 13 16:30 ./ drwxr-xr-x 40 root wheel 1024 Jan 13 04:08 ../ dr-xr-xr-x 4 root wheel 512 Jan 13 15:56 dev/ drwxr-xr-x 2 mysql mysql 512 Jan 13 15:57 etc/ drwxr-xr-x 11 mysql mysql 512 Jan 13 17:07 mysql/ drwxrwxrwx 3 mysql mysql 512 Jan 13 17:55 tmp/ drwxrwxrwx 5 mysql mysql 1024 Jan 13 17:55 var/
ダウンロードしたファイルの展開先は、/usr/local/src/mysql-5.0.51/
システム側の起動スクリプトは、/usr/local/etc/rc.d/120.mysql.shとしてます。
先ず、環境整備。chrootの状態で動くようにする。
# インストール先のディレクトリを作成 mkdir /usr/local/mysql cd / ln -s /usr/local/mysql mysql cd /usr/local/mysql mkdir {tmp,var,dev,etc,tmp} chown -R mysql:mysql . {var,etc} # MDデバイスの読み込み mdconfig -a -t malloc -s 32m -u 0 newfs -U /dev/md0 mount /dev/md0 tmp # localtimeの設定 cp /etc/localatime etc/localtime # devfsの作成 mount_devfs devfs dev devfs -m dev rule apply hide devfs -m dev rule apply path null unhide devfs -m dev rule apply path random unhide # コンパイルとDBのインストール cd /usr/local/src/mysql-5.0.51/ ./configure --prefix=/mysql --with-mysqld-ldflags=-all-static && make && make install DESTDIR=/usr/local/mysql ./scripts/mysql_install_db # 設定ファイルの作成 sed -e 's/\/tmp/\/mysql\/tmp/g' my-medium.cnf > /mysql/etc/my.cnf
起動スクリプトの改変(mysql.server)
46,47c46,48 < basedir= < datadir= --- > chrootdir='/usr/local/mysql2' > basedir="" > datadir="" 267a269,279 > # Mount a devfs in the chroot directory if needed > # > if [ ! -c ${chrootdir}/dev/random -o \ > ! -c ${chrootdir}/dev/null ]; then > umount ${chrootdir}/dev 2>/dev/null > mount_devfs devfs ${chrootdir}/dev > fi > devfs -m ${chrootdir}/dev rule apply hide > devfs -m ${chrootdir}/dev rule apply path null unhide > devfs -m ${chrootdir}/dev rule apply path random unhide > 304c316 < $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 & --- > $bindir/mysqld_safe --default-character-set=utf8 --default-collation=utf8_bin --basedir=$basedir --datadir=$datadir --pid-file=$server_pid_file --log --ledir=$basedir/libexec $other_args >> /var/log/mysql_init2.log 2>&1 &
起動スクリプトの改変その2(mysqld_safe)
386c386 < $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file >> $err_log 2>&1 --- > $NOHUP_NICENESS /usr/sbin/chroot -u mysql -g mysql /usr/local/mysql2 $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file >> $err_log 2>&1 388c388 < eval "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file $args >> $err_log 2>&1" --- > eval "$NOHUP_NICENESS /usr/sbin/chroot -u mysql -g mysql /usr/local/mysql2 $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file >> $err_log 2>&1"
後は、mysqlのrootのパスワードを設定して、起動するだけです、お疲れです^^