以下是我自己没事写的一个mysql安装脚本,主要是针对单机mysql5.7自动安装的,自己测试没啥问题。

哪位有需要可以拿去用,如果应用中有什么问题,可以留言给我。或者哪位觉得我的脚本有需要修改的地方,也请不吝赐教。

运行环境 centos7.1



#!/bin/bash

install_pre='/usr/local/mysql'
data_dir='/data'
log_dir='/log'
enable_systemd=1
src_dir=/home
mysql_ver='mysql-5.7.23'
mysql_down_url='https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.23.tar.gz'
mysql_tar_name=`echo $mysql_down_url|awk -F/ '{print $NF}'`
install_rep="$src_dir/install_mysql.rep"
password=111111
# install mysql commpile tools
yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel

if [ $? -eq 0 ];then
    echo "install mysql commpile tools success!"
else
    echo "maybe some tools install error!"
fi

#create mysql user and mysql group

id mysql
if [ $? -ne 0 ];then
    groupadd -r mysql && useradd -r -g mysql -s /bin/nologin 
    if [ $? -eq 0 ];then
        echo "user mysql created!">>"$install_rep"
    fi
else
    echo "user mysql have existed">>"$install_rep"
fi
[ ! -d $install_pre ] && mkdir "$install_pre"
[ ! -d $data_dir ] && mkdir "$data_dir"
chown -R mysql:mysql "$install_pre"
chown -R mysql:mysql "$data_dir"

#wget mysql source file

cd /home/
wget $mysql_down_url 

tar -zxf "$mysql_tar_name"
cd "$mysql_ver"

[ ! -d project ] && mkdir project

if [ -d project ];then
    cd project
else
    echo "project directory is not create!">>"$install_rep"
fi

cmake .. -DSMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data -DSYSCONFDIR=/etc -DDFEAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=al
l -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DWITH_MYISAM_STORAGE_ENGING=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAG
E_ENGINE=1 -DWITH_SYSTEMD=1 -DWITH_BOOST="$src_dir/$mysql_ver/boost"

if [ $? -eq 0 ];then
    echo "cmake action have success!"
        make&&make install 
else
    exit 1
fi
[ ! -d /var/run/mysqld/ ] && mkdir /var/run/mysqld && chown -R mysql:mysql /var/run/mysqld
[ ! -d /usr/local/mysql/run/ ] && mkdir /usr/local/mysql/run && chown -R mysql:mysql /usr/local/mysql/run
cd "$install_pre"
[ ! -d log ] && mkdir log && chown -R mysql:mysql log
bin/mysqld --initialize --user=mysql --basedir="$install_pre" --datadir="$data_dir" >>"$install_rep"

if [ $? -eq 0 ];then
     echo "mysql have initialed!" 
else
    echo "mysql initialization have error!"
fi


cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system

systemctl enable mysqld.service

systemctl restart mysqld.service
port=`netstat -an |grep 3306|awk '{print $4}'|awk -F: '{print $NF}'
`
if [ $port -eq 3306 ];then
    echo "mysql service is start!" >>"$install_rep"
fi
tmp_passwd=`grep 'A temporary password' "$install_pre/log/alert.log" |awk -F: '{print $NF}'`
echo "$tmp_passwd" >>"$install_rep"
"$install_pre/bin/mysql" -uroot -p"$tmp_passwd"  --connect-expired-password -D mysql -e "alter user root@'localhost' identified by '"$password"'" 
"$install_pre/bin/mysql" -uroot -p"$password" -D mysql -e "show tables"

if [ $? -eq 0 ];then
    echo "root password have changed!">>"$install_rep"
else
    echo "root password change error!">>"$install_rep"
fi