shell脚本实现msyql5.7全自动安装

本文介绍了一种使用Shell脚本一键安装配置MySQL 5.7的方法,包括创建用户、初始化目录、配置my.cnf文件、启动服务及修改root密码等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#! /bin/bash
#coding=utf-8
set -e
#auto instiall mysql for 5.7

userdir=/usr/local
basedir=/data/server/mysql3306
port=3306
socket=/tmp/mysql3306.sock
newpwd="123456"
tarfile="mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz"
#------------------------------------------------------------------

tarfiledir="${tarfile%.tar.gz*}"
realpath=$(readlink -f "$0")
realdir=$(dirname "$realpath")

logfile=${realdir}/mysql_install.log
true > ${logfile}

#adduser
mkdir -p ${userdir}

result_user=$(id mysql)
if [ -z "$result_user" ]
then
	groupadd mysql
	useradd -g mysql -M  -s /sbin/nologin mysql
	echo "create user mysql by this script" >> ${logfile}
else
	echo "user mysql has been created before run this script" >> ${logfile}
fi

#init dir

cd "${realdir}"
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
if [ ! -d ${tarfiledir} ]
then
tar -zxvf ${tarfile}
fi
if [ ! -d "${basedir}" ] 
then

mkdir -p ${basedir}
cp -r ${tarfiledir}/*  ${basedir}/
fi

mkdir -p ${basedir}/{data,tmp,logs}
cd ${userdir}
ln -sf ${basedir} mysql
chown -R mysql:mysql ${basedir}
ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
lastip=${ip##*.}
#init mysql
cat > /etc/my.cnf << EOF
[mysql]
socket=${socket}
[mysqld]
server_id=${lastip}${port}
user=mysql
socket=${socket}
port=${port}
basedir=${basedir}
datadir=${basedir}/data
log_bin=${basedir}/logs/binlog
log_error=${basedir}/logs/error
tmpdir=${basedir}/tmp

EOF

${basedir}/bin/mysqld --defaults-file=/etc/my.cnf --initialize && echo "init mysql successful"

#add mysql to server
\cp -f ${basedir}/support-files/mysql.server /etc/init.d/mysql

result_grep_path="$( grep   "${basedir}/bin" /etc/profile  )" || result_grep_path=""
if [ -z "${result_grep_path}" ]
then
	echo "export PATH=\$PATH:${basedir}/bin" >> /etc/profile ;
	source /etc/profile
fi
#start mysql server
service mysql start
#update root's pwd
genpwd=$(cat ${basedir}/logs/error.err | grep "password is generated for root@localhost") || genpwd=""
oldpwd=${genpwd##*root@localhost: } 
#mysql -uroot -p${oldpwd} -e "alter user user() identified by \"${newpwd}\"";
cd ${realdir}
cat > tmp_expect.sh << EOF
#! /usr/bin/expect

spawn mysql -uroot -p
expect {
	"password" { send "${oldpwd}\n";exp_continue;}
	"mysql>" {send "alter user user() identified by \"${newpwd}\";\n"}
}
interact
EOF
chmod 755 ./tmp_expect.sh
expect ./tmp_expect.sh && rm -rf ./tmp_expect.sh && rm -rf ./mysql_install.log





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值