#! /bin/bash
echo
echo \$@:$@
echo \$#:$#
echo \$?:$?
echo
#check parameters number
if [[ $# < 2 ]]
then
echo
echo ----------------------------------------------------
echo example:$0
echo -e "\t-f mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz"
echo -e "\t-u mysql_test"
echo -e "\t-p root"
echo -e "\t-P 3307"
echo ----------------------------------------------------
echo
exit 1
fi
tar_name=
user=mysql
password=123
port=3306
#getopts
while getopts f:u:p:P: opt
do
case $opt in
f)
if [ -f $OPTARG ]
then
tar_name=$OPTARG
else
echo mysql-version.os.tar.gz not found!!!
exit 1
fi
;;
u)
echo $OPTARG
user=$OPTARG;;
p)
echo $OPTARG
password=$OPTARG;;
P)
echo $OPTARG
port=$OPTARG;;
?)
echo unrecognized parameter...
exit 1
esac
done
echo
echo -------------------------------------
echo exec_file:$0
echo tar_name:$tar_name
echo password:$password
echo port:$port
echo -------------------------------------
echo
######################################################################
# 0:creat a new dir
# 1:dir exsits
makedir() {
if [[ -d $1 ]]
then
echo 1
else
mkdir -p $1
echo 0
fi
}
mkdir_test() {
test_dir=/test_dir/dir
echo test_dir:`makedir $test_dir`
echo tset_dir:`makedir $test_dir`
mkdir $test_dir #file exsits and output error message
mkdir $test_dir>/dev/null #file exsits and output error message
mkdir $test_dir 2>/dev/null #file exsits and output error to /dev/null
#echo `rmdir $test_dir`
}
#mkdir_test
#####################################################################
tempfile_test() {
tempfile=`mktemp /err.XXXX`
echo $tempfile
cd $test_dir
tempfile=`mktemp /err.XXXX`
echo $tempfile
tempfile=`mktemp err.XXXX`
echo $tempfile
}
#tempfile_test
#####################################################################
#exit 0
#create all dir variables
app_path=/app_test
file_name=${tar_name%%.tar*}
prefixdir=`echo $tar_name|cut -c 1-12`
basedir=/usr/local/$user
datadir=$basedir/data
bindir=$basedir/bin
socket=/tmp/$user.sock
tempfile=`mktemp /err.XXXX`
group=$user
server_path=/etc/init.d
server_name=${user}d
echo $server_name
#create user and group
if [[ -z `cat /etc/passwd|grep $user` ]]
then
adduser $user -s /sbin/nologin -M
fi
#if [ -d $app_path ]
#then
# echo exsits $app_path
#else
# mkdir $app_path
#fi
makedir $app_path
tar xzvf $tar_name -C $app_path>/dev/null
cd $app_path
mv $file_name $prefixdir
ln -s $app_path/$prefixdir $basedir
sed -i "s#/usr/local/mysql#$basedir#g" $basedir/support-files/mysql.server $bindir/mysqld_safe
sed -i "s/user='mysql'/user='$user'/g" $bindir/mysqld_safe
sed -i "s#lockdir/mysql#lockdir/$user#g" $basedir/support-files/mysql.server
cp $basedir/support-files/mysql.server $server_path/$server_name
echo -e "export PATH='$bindir:\$PATH'">/etc/profile.d/${user}.sh
#create my.cnf
touch $basedir/my.cnf
#create data directory
cat>>$basedir/my.cnf<
[mysqld]
basedir=$basedir
datadir=$datadir
log_error=$user.err
socket=$socket
pid-file=$user.pid
port=$port
server_id=$port
EOF
chown -R $group.$user $basedir
#chown -R $group.$user $basedir/
$bindir/mysqld --initialize --basedir=$basedir --datadir=$datadir --port=$port --user=$user 2>$tempfile 1>/dev/null
password_init=`grep password < $tempfile`
password_in=${password_init##*localhost: }
echo origin_password:$password_in
echo $password_in>$tempfile
service $server_name start
#alter user password
$bindir/mysqladmin -uroot -p$password_in password $password
#$bindir/mysql --connect-expired-password -uroot -p -P $port -S $socket -e "alter user root@'localhost' identified by '$password';flush privileges;"/dev/null
echo $?
#install over and echo all information
rm -rf /$tempfile
source /etc/profile
echo
echo service:$server_name
echo user:$user
echo socket:$socket
echo passwd=$password
echo port=$port
echo
echo install over