CentOS/RadHat一键安装MySQL5.5.37

新到的服务器,部署安装生产环境,找到了LNMP的一键安装包。官方网址为:http://lnmp.org/

但是服务器部署要应用与数据库分开,本来应用服务器和数据库服务器直接都安装lnmp也可以,可强迫症的我不希望看到应用服务器里安装了mysql数据库,同时也不希望数据库服务器里安装nginx、php等。

所以,我就针对LNMP的安装脚本做了修改整理,把安装数据库的东西摘出来了。

mysql-install.sh 脚本:

#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH# Check if user is rootif [ $(id -u) != "0" ]; then    echo "Error: You must be root to run this script, please use root to install MySQL"    exit 1ficlearecho "========================================================================="echo "A tool to auto-compile & install MySQL on Linux "echo "========================================================================="cur_dir=$(pwd)#set mysql root passwordecho "==========================="mysqlrootpwd="root"echo "Please input the root password of mysql:"read -p "(Default password: root):" mysqlrootpwdif [ "$mysqlrootpwd" = "" ]; thenmysqlrootpwd="root"fiecho "==========================="echo "MySQL root password:$mysqlrootpwd"echo "==========================="#do you want to install the InnoDB Storage Engine?echo "==========================="installinnodb="n"echo "Do you want to install the InnoDB Storage Engine?"read -p "(Default no,if you want please input: y ,if not please press the enter button):" installinnodbcase "$installinnodb" iny|Y|Yes|YES|yes|yES|yEs|YeS|yeS)echo "You will install the InnoDB Storage Engine"installinnodb="y";;n|N|No|NO|no|nO)echo "You will NOT install the InnoDB Storage Engine!"installinnodb="n";;*)echo "INPUT error,The InnoDB Storage Engine will NOT install!"installinnodb="n"esac#which MySQL Version do you want to install?echo "==========================="isinstallmysql55="y"get_char(){SAVEDSTTY=`stty -g`stty -echostty cbreakdd if=/dev/tty bs=1 count=1 2> /dev/nullstty -rawstty echostty $SAVEDSTTY}echo ""echo "Press any key to start...or Press Ctrl+c to cancel"char=`get_char`function InitInstall(){cat /etc/issueuname -aMemTotal=`free -m | grep Mem | awk '{print  $2}'`  echo -e "\n Memory is: ${MemTotal} MB "#Set timezonerm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeyum install -y ntpntpdate -u pool.ntp.orgdaterpm -qa|grep mysqlrpm -e mysqlyum -y remove mysql-server mysql mysql-libsyum -y remove php-mysqlyum -y install yum-fastestmirror#Disable SeLinuxif [ -s /etc/selinux/config ]; thensed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configficp /etc/yum.conf /etc/yum.conf.lnmpsed -i 's:exclude=.*:exclude=:g' /etc/yum.conffor packages in patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap diffutils;do yum -y install $packages; donemv -f /etc/yum.conf.lnmp /etc/yum.conf}function CheckAndDownloadFiles(){echo "============================check files=================================="if [ -s mysql-5.5.37.tar.gz ]; then  echo "mysql-5.5.37.tar.gz [found]"  else  echo "Error: mysql-5.5.37.tar.gz not found!!!download now......"  wget -c http://soft.vpser.net/datebase/mysql/mysql-5.5.37.tar.gzfiif [ -s mysql-openssl.patch ]; then  echo "mysql-openssl.patch [found]"  else  echo "Error: mysql-openssl.patch not found!!!download now......"  wget -c http://soft.vpser.net/lnmp/ext/mysql-openssl.patchfiecho "============================check files=================================="}function InstallMySQL55(){echo "============================Install MySQL 5.5.26=================================="cd $cur_dirrm -f /etc/my.cnftar zxf mysql-5.5.37.tar.gzcd mysql-5.5.37/patch -p1 < $cur_dir/mysql-openssl.patchcmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1make && make installgroupadd mysqluseradd -s /sbin/nologin -M -g mysql mysqlcp support-files/my-medium.cnf /etc/my.cnfsed '/skip-external-locking/i\datadir = /usr/local/mysql/var' -i /etc/my.cnfif [ $installinnodb = "y" ]; thensed -i 's:#innodb:innodb:g' /etc/my.cnfsed -i 's:/usr/local/mysql/data:/usr/local/mysql/var:g' /etc/my.cnfelsesed '/skip-external-locking/i\default-storage-engine=MyISAM\nloose-skip-innodb' -i /etc/my.cnffi/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysqlchown -R mysql /usr/local/mysql/varchgrp -R mysql /usr/local/mysql/.cp support-files/mysql.server /etc/init.d/mysqlchmod 755 /etc/init.d/mysqlcat > /etc/ld.so.conf.d/mysql.conf<<EOF/usr/local/mysql/lib/usr/local/libEOFldconfigln -s /usr/local/mysql/lib/mysql /usr/lib/mysqlln -s /usr/local/mysql/include/mysql /usr/include/mysqlif [ -d "/proc/vz" ];thenulimit -s unlimitedfi/etc/init.d/mysql startln -s /usr/local/mysql/bin/mysql /usr/bin/mysqlln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldumpln -s /usr/local/mysql/bin/myisamchk /usr/bin/myisamchkln -s /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwdcat > /tmp/mysql_sec_script<<EOFuse mysql;update user set password=password('$mysqlrootpwd') where user='root';delete from user where not (user='root') ;delete from user where user='root' and password=''; drop database test;DROP USER ''@'%';flush privileges;EOF/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_scriptrm -f /tmp/mysql_sec_script/etc/init.d/mysql restart/etc/init.d/mysql stopecho "============================MySQL 5.5.26 install completed========================="}function AddAndStartup(){/etc/init.d/mysql start#add iptables firewall rulesif [ -s /sbin/iptables ]; then/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT/sbin/iptables -I INPUT -p tcp --dport 3306 -j DROP/sbin/iptables-savefi}function CheckInstall(){echo "===================================== Check install ==================================="clearismysql=""echo "Checking..."if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then  echo "MySQL: OK"  ismysql="ok"  else  echo "Error: /usr/local/mysql not found!!!MySQL install failed."fiif [ "$ismysql" = "ok" ] ; thenecho "Install MySQL  completed! enjoy it."echo "default mysql root password:$mysqlrootpwd"echo "The path of some dirs:"echo "mysql dir:   /usr/local/mysql"echo ""echo "========================================================================="netstat -ntlelseecho "Sorry,Failed to install mysql!"fi}InitInstall 2>&1 | tee /root/lnmp-install.logCheckAndDownloadFiles 2>&1 | tee -a /root/lnmp-install.logInstallMySQL55 2>&1 | tee -a /root/lnmp-install.logAddAndStartup 2>&1 | tee -a /root/lnmp-install.logCheckInstall 2>&1 | tee -a /root/lnmp-install.log

执行上述脚本也可以自动下载安装程序包,自动完成安装。为了节省时间也可以提前下载。

自己整理了一个安装包,分享出来下载网址:http://pan.baidu.com/s/1i3l6KK1

不过可能会安装一些没用的依赖文件,因为我也没有仔细的删除掉,但是安装就安装了吧,无所谓也不会影响服务器性能。

CentOS/RadHat一键安装MySQL5.5.37

相关文章:

你感兴趣的文章:

标签云: