mysql安装部署
#!/bin/sh execute_path=`dirname $0` SCRIPT_PATH=`cd $execute_path; pwd` . $SCRIPT_PATH/exports.sh add_group() { grep $group /etc/group 2>&1 >/dev/null if [ $? -ne 0 ];then groupadd $group else echoAndLog $SERVICE_NAME "group: "$group" is exist" fi } add_user() { id $user 2>&1 >/dev/null if [ $? -ne 0 ];then useradd -g $group -d $user_dir -m $user chown "$user":"$group" $user_dir else echoAndLog $SERVICE_NAME "user: "$user" is exist" echoAndLog $SERVICE_NAME "please delete this user:$user and directory: $user_dir" fi } install_mysql() { rm -rf $user_dir/* cp $MYSQL_PKG_PATH $user_dir cd $user_dir tar xvzf $MYSQL_VERSION".tar.gz" sed -i "s#/usr/local/mysql#$user_dir/mysql#g" $MYSQL_VERSION/bin/mysqld_safe chown $user:$group $MYSQL_VERSION rm -rf $MYSQL_VERSION".tar.gz" } set_mysql_home() { cd $user_dir rm -fr mysql su - $user -c "ln -s $MYSQL_VERSION mysql" su - $user -c "mkdir data; mkdir log; cd mysql; bin/mysql_install_db --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql" } set_autoRun() { echo "su - $user -c \"cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid &\"" >> /etc/rc.d/rc.local } config_mysql() { default_conf=$user_dir/my.cnf if [ -f $default_conf ] then rm -rf $default_conf fi echo "[mysqld]" >>$default_conf echo "collation-server=utf8_general_ci" >>$default_conf echo "character-set-server=utf8" >>$default_conf echo "innodb_large_prefix = true" >>$default_conf echo "innodb_file_format = barracuda" >>$default_conf echo "lower_case_table_names = 1" >>$default_conf echo "datadir=$user_dir/data/mysql" >>$default_conf echo "socket=$user_dir/mysql.sock" >>$default_conf echo "symbolic-links=0" >>$default_conf echo "max_connections=1000" >>$default_conf echo "tmp_table_size=256M" >>$default_conf echo "max_heap_table_size=256M" >>$default_conf echo "" >>$default_conf echo "[mysqld_safe]" >>$default_conf echo "log-error=$user_dir/log/mysqld.log" >>$default_conf echo "pid-file=$user_dir/mysqld.pid" >>$default_conf echo "[client]" >>$default_conf echo "socket=$user_dir/mysql.sock" >>$default_conf echo "">>$default_conf echo "!includedir /etc/my.cnf.d" >>$default_conf chown $user:$group $default_conf } start_mysql() { i=0 echo $user_dir/my.cnf su - $user -c "cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid --skip-grant-tables &" while [ 1 -eq 1 ] do lsof -i:3306 if [ $? -eq 0 ]; then return 0 else let i+=1 sleep 1 if [ $i -gt 300 ]; then echo "mysql start failed" return 1 fi fi done } resetRootPasswd() { sleep 20 $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "update mysql.user set authentication_string=password('') where user='root' and Host = 'localhost';" $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "flush privileges;" } sendTimeoutInfo() { content="installing mysql takes over 10 minutes, installing process will exit!" echo $content } timeout() { waitfor=600 command=$* $command & commandpid=$! ( sleep $waitfor ; kill -9 $commandpid > /dev/null 2>&1 && sendTimeoutInfo ) & watchdog=$! sleeppid=$PPID wait $commandpid > /dev/null 2>&1 kill $sleeppid > /dev/null 2>&1 } setEnv() { echo 'PATH=$PATH:$HOME/mysql/bin' >> $user_dir/.bash_profile su - $user -c "source .bash_profile" } createAppUser() { sleep 5 $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock --connect-expired-password -e "set password = password('');" $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'%' identified by '!Root@123';" $user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'localhost' identified by '!Root@123';" } #Script main group=$MYSQL_INSTALL_GROUP user=$MYSQL_INSTALL_USER user_dir=/home/$user add_group echoAndLog $SERVICE_NAME "add $group group ok" add_user echoAndLog $SERVICE_NAME "add $user user ok" install_mysql config_mysql echoAndLog $SERVICE_NAME "install mysql ok" set_mysql_home echoAndLog $SERVICE_NAME "set mysql home ok" #set_autoRun #echoAndLog $SERVICE_NAME "set mysql autoRun ok" start_mysql if [ $? -ne 0 ]; then echoAndLog $SERVICE_NAME "start mysql failed" exit 1 else sleep 30 echoAndLog $SERVICE_NAME "start mysql ok" resetRootPasswd if [ $? -ne 0 ]; then echoAndLog $SERVICE_NAME "reset root password failed" exit 1 else echoAndLog $SERVICE_NAME "reset root password ok" fi fi setEnv createAppUser if [ $? -eq 0 ] then echoAndLog $SERVICE_NAME "createAppUser success" else echoAndLog $SERVICE_NAME "createAppUse failed" exit 1 fi if [ ! -d $MYSQL_HA_DIR ] then mkdir -p $MYSQL_HA_DIR fi cd $SCRIPT_PATH \cp -rf exports.sh monitor.sh run.sh stop.sh rollback.sh uninstall.sh $MYSQL_HA_DIR sh stop.sh if [ $? -eq 0 ] then echoAndLog $SERVICE_NAME "stop mysql success" echoAndLog $SERVICE_NAME "install mysql finished" exit 0 else echoAndLog $SERVICE_NAME "stop mysql failed" echoAndLog $SERVICE_NAME "install mysql error" exit 1 fi
#!/bin/sh
execute_path=`dirname $0`SCRIPT_PATH=`cd $execute_path; pwd`. $SCRIPT_PATH/exports.sh
add_group() {grep $group /etc/group 2>&1 >/dev/nullif [ $? -ne 0 ];thengroupadd $groupelseechoAndLog $SERVICE_NAME "group: "$group" is exist"fi}add_user() {id $user 2>&1 >/dev/nullif [ $? -ne 0 ];thenuseradd -g $group -d $user_dir -m $userchown "$user":"$group" $user_direlseechoAndLog $SERVICE_NAME "user: "$user" is exist"echoAndLog $SERVICE_NAME "please delete this user:$user and directory: $user_dir"fi}
install_mysql() { rm -rf $user_dir/*cp $MYSQL_PKG_PATH $user_dircd $user_dirtar xvzf $MYSQL_VERSION".tar.gz" sed -i "s#/usr/local/mysql#$user_dir/mysql#g" $MYSQL_VERSION/bin/mysqld_safe chown $user:$group $MYSQL_VERSIONrm -rf $MYSQL_VERSION".tar.gz"}
set_mysql_home() {cd $user_dirrm -fr mysqlsu - $user -c "ln -s $MYSQL_VERSION mysql"su - $user -c "mkdir data; mkdir log; cd mysql; bin/mysql_install_db --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql"}
set_autoRun() {echo "su - $user -c \"cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid &\"" >> /etc/rc.d/rc.local}
config_mysql() {default_conf=$user_dir/my.cnfif [ -f $default_conf ]then rm -rf $default_conffiecho "[mysqld]" >>$default_confecho "collation-server=utf8_general_ci" >>$default_confecho "character-set-server=utf8" >>$default_confecho "innodb_large_prefix = true" >>$default_confecho "innodb_file_format = barracuda" >>$default_confecho "lower_case_table_names = 1" >>$default_confecho "datadir=$user_dir/data/mysql" >>$default_confecho "socket=$user_dir/mysql.sock" >>$default_confecho "symbolic-links=0" >>$default_confecho "max_connections=1000" >>$default_confecho "tmp_table_size=256M" >>$default_confecho "max_heap_table_size=256M" >>$default_confecho "" >>$default_confecho "[mysqld_safe]" >>$default_confecho "log-error=$user_dir/log/mysqld.log" >>$default_confecho "pid-file=$user_dir/mysqld.pid" >>$default_confecho "[client]" >>$default_confecho "socket=$user_dir/mysql.sock" >>$default_confecho "">>$default_confecho "!includedir /etc/my.cnf.d" >>$default_conf chown $user:$group $default_conf}
start_mysql() {i=0echo $user_dir/my.cnfsu - $user -c "cd mysql/bin; ./mysqld_safe --defaults-file=$user_dir/my.cnf --basedir=$user_dir/mysql --datadir=$user_dir/data/mysql --socket=$user_dir/mysql.sock --pid-file=$user_dir/mysqld.pid --skip-grant-tables &"while [ 1 -eq 1 ]dolsof -i:3306if [ $? -eq 0 ]; thenreturn 0else let i+=1 sleep 1 if [ $i -gt 300 ]; then echo "mysql start failed" return 1 fifidone}
resetRootPasswd() { sleep 20$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "update mysql.user set authentication_string=password('') where user='root' and Host = 'localhost';"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "flush privileges;"}
sendTimeoutInfo(){ content="installing mysql takes over 10 minutes, installing process will exit!" echo $content}
timeout(){ waitfor=600 command=$* $command & commandpid=$! ( sleep $waitfor ; kill -9 $commandpid > /dev/null 2>&1 && sendTimeoutInfo ) & watchdog=$! sleeppid=$PPID wait $commandpid > /dev/null 2>&1 kill $sleeppid > /dev/null 2>&1}
setEnv(){ echo 'PATH=$PATH:$HOME/mysql/bin' >> $user_dir/.bash_profile su - $user -c "source .bash_profile" }
createAppUser(){sleep 5$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock --connect-expired-password -e "set password = password('');"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'%' identified by '!Root@123';"$user_dir/mysql/bin/mysql -S$user_dir/mysql.sock -e "grant all privileges on *.* to 'ztecms'@'localhost' identified by '!Root@123';"}
#Script main
group=$MYSQL_INSTALL_GROUPuser=$MYSQL_INSTALL_USERuser_dir=/home/$user
add_groupechoAndLog $SERVICE_NAME "add $group group ok"
add_userechoAndLog $SERVICE_NAME "add $user user ok"
install_mysqlconfig_mysql
echoAndLog $SERVICE_NAME "install mysql ok"
set_mysql_home
echoAndLog $SERVICE_NAME "set mysql home ok"
#set_autoRun
#echoAndLog $SERVICE_NAME "set mysql autoRun ok"
start_mysqlif [ $? -ne 0 ]; thenechoAndLog $SERVICE_NAME "start mysql failed"exit 1else sleep 30echoAndLog $SERVICE_NAME "start mysql ok"resetRootPasswdif [ $? -ne 0 ]; thenechoAndLog $SERVICE_NAME "reset root password failed"exit 1elseechoAndLog $SERVICE_NAME "reset root password ok"fifi
setEnvcreateAppUserif [ $? -eq 0 ]then echoAndLog $SERVICE_NAME "createAppUser success"else echoAndLog $SERVICE_NAME "createAppUse failed" exit 1fi
if [ ! -d $MYSQL_HA_DIR ]then mkdir -p $MYSQL_HA_DIRficd $SCRIPT_PATH\cp -rf exports.sh monitor.sh run.sh stop.sh rollback.sh uninstall.sh $MYSQL_HA_DIR
sh stop.shif [ $? -eq 0 ]then echoAndLog $SERVICE_NAME "stop mysql success" echoAndLog $SERVICE_NAME "install mysql finished" exit 0else echoAndLog $SERVICE_NAME "stop mysql failed" echoAndLog $SERVICE_NAME "install mysql error" exit 1fi

浙公网安备 33010602011771号