#!/bin/bash
#--------------------------------------------------------
# Function: Install mysql for CentOS7
# Date: 2017-10-06
# Author: Jason Wang
#--------------------------------------------------------
DOWNPATH=/root/download
[ ! -d
$DOWNPATH ]&&{
mkdir
$DOWNPATH
}
cd
$DOWNPATH
#Print debug information
function
Debug(){
echo
""
echo
"\033[37m[$(date)]\033[32m ::::::::::>>>>>-----------------<<<<<::::::::::\033[0m"
echo
"\033[37m[$(date)]\033[31m "
$1
"\033[0m"
echo
""
}
#Installing wget
yum install -y wget
#Dwonloading boost-1.59.0
[ ! -f
${DOWNPATH}/boost_1_59_0.tar.gz ]&&{
wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
}
if [
$? -gt 1 ]
then
Debug
"Mysql Installer: downloading boost_1_59_0.tar.gz error...."
exit 404
fi
#Downloading mysql-5.7.20
[ ! -f
${DOWNPATH}/mysql-5.7.20.tar.gz ]&&{
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
}
if [
$? -gt 1 ]
then
Debug
"Mysql Installer: downloading mysql-5.7.20.tar.gz error...."
exit 404
fi
#Creating user and group
groupadd mysql
useradd -g mysql mysql
usermod -s /sbin/nologin mysql
#Creating basedir for mysql
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
#Installing dependencies
yum install -y gcc gcc-c++ autoconf automake cmake make
yum install -y zlib zlib-devel ncurses ncurses-devel bison git
cd
$DOWNPATH
[ ! -f
${DOWNPATH}/boost_1_59_0.tar.gz ]&&{
Debug
"Mysql Installer: file boost_1_59_0.tar.gz is not exists..."
exit 404
}
[ ! -f
${DOWNPATH}/mysql-5.7.20.tar.gz ]&&{
Debug
"Mysql Installer: file mysql-5.7.20.tar.gz is not exists..."
exit 404
}
[ ! -d
$DOWNPATH/boost_1_59_0 ]&&{
tar -zxvf boost_1_59_0.tar.gz
cp -Rf boost_1_59_0 /usr/local/mysql/mysql_boost
}
if [
$? -gt 1 ]
then
Debug
"Mysql Installer: copy /root/download/boost_1_59_0 to /usr/local/mysql/mysql_boost error...."
exit 403
fi
[ ! -d
$DOWNPATH/mysql-5.7.20 ]&&{
tar -zxvf mysql-5.7.20.tar.gz
}
#Starting install mysql
cd
${DOWNPATH}/mysql-5.7.20 && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/mysql/mysql_boost \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1
if [
$? -gt 0 ]
then
Debug
"Mysql Installer: cmake mysql error...."
exit 401
fi
#Make && make install
make && make install
make clean
#Modify
chown -Rf mysql:mysql /usr/local/mysql
#Initialize
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &>/root/.mysql_passwd
if [
$? -gt 0 ]
then
Debug
"Mysql Installer: initialize mysql error...."
exit 401
fi
rm -rf /etc/my.cnf
#Startup script
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#Boot
chkconfig mysqld on && chkconfig --list mysqld
#Start serivice
/usr/local/mysql/bin/mysqld_safe --user=mysql &
if [
$? -gt 0 ]
then
Debug
"Mysql Installer: run mysql error...."
exit 400
fi
echo
"[$(date)] Mysql Installer: mysql already running..."
#Read password (file:/root/.mysql_passwd)
PASSWORD=
$(tail -1 /root/.mysql_passwd|
awk '{print $NF}')
#Print initial password
echo
"[$(date)] Mysql Installer: Mysql initial password is "
$PASSWORD
#Modify password
/usr/local/mysql/bin/mysql -uroot -p
$PASSWORD -e
"set password=password('root');update user set host='%' where user='root';flush privileges"