MySQL-5.6全系列使用脚本自动安装

本脚本使用6个函数实现MySQL-5.6的全系列自动编译安装工作,脚本的功能如下:

一,首先检测是否编译安装过MySQL,检测方式为如果有查找到mysqld_safe这个文件,那么就证明有安装MySQL。脚本自动退出。

二,新建MySQL的用户,如果该用户存在,不建立用户。如果没有改用户,立刻建立。

三,声明了两个变量,其中的version变量的值为MySQL的安装版本,比如想要安装MySQL-5.6.11,那么version的值就为mysql-5.6.11,修改即可,然后运行脚本。

四,自动检测编译环境的依赖包,如果没有安装的包,立刻安装,有安装提示已安装。

五,编译选项比较多,能安装的功能都安装了。

六,脚本可以放在任意位置,对脚本运行没有影响。

七,mysql的主配置文件 /etc/my.cnf 没有进行配置,需要根据自己的需求更改,该脚本只启动服务让MySQL正常运行即可。

八,安装包如果提前下载放置在了本地,那么立刻开始解压文件并编译安装,如果检测到本地没有安装源码包,将通过MySQL官网下载并安装。

脚本运行时间大概为40分钟,下面是脚本的源码:

#!/bin/bash
#!author zsk_john
user=mysql
base_dir=/usr/local/mysql
src_dir=/usr/local/src/mysql
version=mysql-5.6.11
Ver=mysql-5.6
if [ `find / -name mysqld_safe | wc -l` -ne 0 ];then
echo "mysql is installed"
exit 1
fi
#===================================================
function check_user() {
result=`cat /etc/passwd | cut -f1 -d':' | grep $user | wc -l`
if [ $result -ne 0 ];then
echo "$user is exists"
else
useradd -M -s /sbin/nologin $user
echo "$user is success add!!!~~~"
fi
}
#====================================================
function check_pkgs() {
for i in autoconf automake apr apr-devel apr-util apr-util-devel \
bison bzip2-devel cpp fontconfig-devel freetype-devel gcc gcc-c++ compat-dapl \
compat-db-headers compat-db47 compat-gcc-44 compat-gcc-44-c++ compat-glibc \
compat-glibc-headers compat-libcap1 compat-libf2c-34 compat-libgfortran-41 \
compat-libtiff3 compat-openldap ncurses-devel cmake
do
pkgs_rst=`rpm -q $i`
if ( echo $pkgs_rst | grep -q "not installed" ); then
yum install $i -y > /dev/null 2>&1
echo -e "\033[31;1m$i is success install !!!\033[0m"
else
echo -e "\033[32;1m$i is already installed\033[0m"
fi
done
}
#========================================================
function pre_install() {
tar -zxf `find / -name $version.tar.gz` -C /usr/local/src
mv /usr/local/src/$version /usr/local/src/mysql
mkdir -p /usr/local/mysql/{data,etc}
cd /usr/local/src/mysql
}
#==========================================================
function bianyi() {
cd /usr/local/src/mysql
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DINSTALL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 2>&1 |tee /root/makelog.log
make && make install && rm -rf /etc/my.cnf
}
#==============================================================
function bianyihou() {
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
ln -s /usr/local/mysql/my.cnf /etc/my.cnf
ln -s /usr/local/mysql/include/mysql /usr/include/
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
service mysqld restart
rm -rf $src_dir
}
#=====================================================
function wget_mysql() {
src_pkgs=`find / -name $version.tar.gz |wc -l`
if [ $src_pkgs -ne 0 ];then
echo "file is exists"
else
wget -O $version.tar.gz https://cdn.mysql.com/archives/$Ver/$version.tar.gz
fi
}
#======================================================
if test -e $version.tar.gz;then
check_user
check_pkgs
pre_install
bianyi
bianyihou
else
wget_mysql
check_user
check_pkgs
pre_install
bianyi
bianyihou
fi