MySQL 5.5.40自动化安装脚本(一)

2014-11-24 17:12:05 · 作者: · 浏览: 2

学习了两周Linux Shell脚本,终于写出一个MySQL自动化安装脚本。加上今天一整天的测试,可以正常执行安装MySQL 5.5.40. 其他版本还没有测试。现分享一下。也请高手指点一下。


执行该脚本的前提是:


环境介绍


cmake-2.8.10.1.tar.gz
bison-3.0.tar.gz
zlib-1.2.7.tar.gz
mysql-5.5.40.tar.gz
my.cnf //老师共享的文件


脚本内容


#!/bin/bash


echo "step one: create folder and mount packages"


if [ -d /mnt/share ]


then


echo "find it,don't need to create it."




else


mkdir -p /mnt/share


if [[ $ = 0 ]]


then


echo "create it successfully!"


else


echo " can't create this folder!pls check out!"


fi


mount -t cifs -o username=swen02,password=autozhao01! //172.16.11.20/LAMP-all-software /mnt/share


fi




echo "step two: create mysql installation path"




if [ -d /project/class2 ]


then


echo "find it, don't need to create it."


else


mkdir -p /project/class2/


if [[ $ = 0 ]]


then


echo "create it successfully!"


else


echo " can't create this floder!pls check out!"


fi


fi




echo "step three: copy packages to the folder"




cp /mnt/share/cmake-2.8.10.1.tar.gz /project/class2/


cp /mnt/share/bison-3.0.tar.gz /project/class2/


cp /mnt/share/zlib-1.2.7.tar.gz /project/class2/


cp /mnt/share/mysql-5.5.40.tar.gz /project/class2/


cp /mnt/share/my.cnf /project/class2/




echo "step four: install base packages"




yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel*




cd /project/class2


tar -xzvf cmake-2.8.10.1.tar.gz


cd cmake-2.8.10.1


./bootstrap


make && make install


if [[ $ = 0 ]]


then


echo "good job!"


else


echo "sorry, pls check out!"


exit 1


fi


cd ..


tar -zxvf bison-3.0.tar.gz


cd bison-3.0


./configure


make && make install


if [[ $ = 0 ]]


then


echo "good job!"


else


echo "sorry, pls check out!"


exit 1


fi


cd ..


tar -zxvf zlib-1.2.7.tar.gz


cd zlib-1.2.7


./configure


make && make install


cd ..


if [[ $ = 0 ]]


then


echo "good job!"


else


echo "sorry, pls check out!"


exit 1


fi





echo "step five:configure system referenc"




FLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"


CXX=g++


CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"


export CFLAGS CXX CXXFLAGS




echo "step six: begin to install mysql"




groupadd mysql


useradd -r -g mysql mysql


tar -zxvf mysql-5.5.40.tar.gz


cd mysql-5.5.40


cmake -DCMAKE_INSTALL_PREFIX=/project/class2/mysql


make


make install


if [[ $ = 0 ]]


then


echo "good job!"


else


echo "sorry, pls check out!"


exit 1


fi


cd ..




#create folder and initial new db


mkdir ./mysql/run


mkdir ./mysql/log


chown -R mysql.mysql /project/class2/mysql


rm -rf /project/class2/mysql/data/*


./mysql/scripts/mysql_install_db --datadir=/project/class2/mysql/data --user=mysql --basedir=/project/class2/mysql




#modify my.cnf and copy new one




sed 's/default-character-set=gbk/default-character-set=utf8/' my.cnf | sed 's/skip-ssl/#skip-ssl/' >./mysql/my.cnf


chown -R mysql.mysql /project/class2/mysql/my.cnf




#creat ln




ln -s /project/class2/mysql/run/mysql.sock /tmp/mysql.sock




mv /root/.bash_profile /root/.bash_profile.bak




/bin/sed '/export PATH/i\export PATH="$PATH":/project/class2/mysql/bin/' /root/.bash_profile.bak >/root/.bash_profile




#start mysql service


./mysql/bin/mysqld_safe --defaults-file=/project/class2/mysql/my.cnf &




#waitting for service to be started


signal=0


while [[ "$signal" = 0 ]]


do


if [ -z " `grep 'Source distribution' /project/class2/mysql/log/alert.log`" ]


then


echo "not found it"


sl