自己写了一个Mysql自动安装的脚本,在本地测试没啥问题,脚本中自动安装了pcre库和libmcrypt,

环境中定义了一些变量,可以根据大家的环境不同,自己改动一下,我这里所有用到的包都是在/opt/cacti 下,安装的目录是/usr/local,脚本如下:

#!/bin/bash
# date 2012-12-05
# owner by LiuYang
set -x
INSTALL_DIR=/usr/local
PACKAGES_DIR=/opt/cacti
INSTALL_LOG=/tmp/install.log
#
do
      rpm -qa | grep "$packagelist" >> /dev/null
      if [ "$?" != 0 ]; then
          yum -y install $packagelist >> /dev/null
          echo "$packagelist is installing at `date +"%Y%m%d %H:%M:%S"`" >> ${INSTALL_LOG}
      else
          echo "$packagelist is already installed"
      fi
done

# install libmcrypt
if ! test -d ${INSTALL_DIR}/libmcrypt
then
      cd ${PACKAGES_DIR}
      tar xzvf libmcrypt-2.5.7.tar.gz >> /dev/null
      cd libmcrypt-2.5.7
      ./configure --prefix=${INSTALL_DIR}/libmcrypt && make && make install >> /dev/null
else
      echo "`date +"%Y%m%d %H:%M:%S"` libmcrypt is already installed" >>${INSTALL_LOG}
fi

# install pcre
if ! test -d ${INSTALL_DIR}/pcre
then
      cd ${PACKAGES_DIR}
      tar xzvf pcre-8.30.tar.gz >> /dev/null
      cd pcre-8.30
      ./configure --prefix=${INSTALL_DIR}/pcre && make && make install >> /dev/null
else
      echo "`date +"%Y%m%d %H:%M:%S"` pcre is already installed" >> ${INSTALL_LOG}
fi
# install cmake
      cd ${PACKAGES_DIR}
      tar zxvf cmake-2.8.7.tar.gz
      cd cmake-2.8.7
      ./configure && make && make install >> /dev/null

# install mysql
mysql_install () {
      userdel -r mysql
      groupadd mysql
      useradd -g mysql mysql -s /bin/false
      mkdir -p /data/mysql
      mkdir -p ${INSTALL_DIR}/mysql
      chown -R mysql.mysql /data/mysql
      chown -R mysql.mysql ${INSTALL_DIR}/mysql
      cd ${PACKAGES_DIR}
      tar xzvf mysql-5.5.23.tar.gz
      cd mysql-5.5.23
      cmake . -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc && make && make install
      cd ${INSTALL_DIR}/mysql
      cp -f ./support-files/my-huge.cnf /etc/my.cnf
      cp -f ./support-files/mysql.server /etc/rc.d/init.d/mysqld
      sed -i '38 a datadir = /data/mysql' /etc/my.cnf
      sed -i 's#^basedir\=#&/usr/local/mysql#' /etc/rc.d/init.d/mysqld
      sed -i 's#^datadir\=#&/data/mysql#' /etc/rc.d/init.d/mysqld
      ./scripts/mysql_install_db --user=mysql
      chmod 755 /etc/rc.d/init.d/mysqld
      chkconfig mysqld on
      /etc/init.d/mysqld start
      echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
      ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
      ln -s /usr/local/mysql/include/mysql /usr/include/mysql

}


if ! test -d ${INSTALL_DIR}/mysql
then
      mysql_install >> /dev/null
      netstat -ntulp | grep mysql
else
      echo "`date +"%Y%m%d %H:%M:%S"` mysql is already installed" >> ${INSTALL_LOG}
      netstat -ntulp | grep mysql
fi