自己写了一个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