首先在使用下面脚本之前要安装wget软件,各节点配置免密登录,挂载一个Mysql包:
这里用的是mysql的rpm包,安装后设置了远程连接权限,修改了数据库默认字符编码集:
#!/bin/bash
#远程rpm仓库
BASE_SERVER="hadoop01"
service mysql stop
#删除原有的mysql
EXIST_SERVERS=`rpm -qa |grep -i mysql`
for SERVER in ${EXIST_SERVERS}
do
rpm -e --nodeps $SERVER
done
rm -rf /usr/lib/mysql
rm -rf /usr/include/mysql
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql
#下载mysql rpm安装包
wget http://${BASE_SERVER}/soft/soft/mysql/MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
wget http://${BASE_SERVER}/soft/soft/mysql/MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
#安装expect
wget http://${BASE_SERVER}/centos67
echo %%%%%%%%%%%开始下载%%%%%%%%%%%%%
rm -rf /root/.mysql_secret
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
yum install -y expect
rm -rf MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
rm -rf MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
echo !!!!!!!!!!!删除安装包!!!!!!!!!!!
service mysql start
ABC=`cat /root/.mysql_secret`
LAST_PASSWORD=${ABC:(-16)}
echo "最后mysql安装随机密码: ${LAST_PASSWORD}"
echo "install mysql success!!!!!!"
#进行初始化配置
#使用expect去模拟登录,改掉密码
expect -c "
spawn mysql -u root -p
expect {
\"password:\" {send \"${LAST_PASSWORD}\r\";exp_continue}
\"mysql>\" {send \"set PASSWORD = PASSWORD('root');exit;\r\";exp_continue}
}
"
echo "成功"
#设置远程连接权限
mysql -u root -proot << EOF
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' with grant option;
flush privileges;
use mysql;
select host,user,password from user;
EOF
echo "修改权限成功"
#修改数据库默认字符编码集
cp /usr/share/mysql/my-default.cnf /etc/my.cnf
cat >> /etc/my.cnf << EOF
init_connect='SET NAMESutf8'
character-set-server=utf8
collation-server=utf8_general_ci
EOF
#重启,使设置的字符编码集生效
service mysql restart
再写一个自动发送脚本:
#!/bin/bash
SERVERS="$*"
PASSEORD=hadoop
BASE_SERVER=hadoop01
for SERVER in $SERVERS
do
scp installMysql.sh root@$SERVER:/root/
ssh root@$SERVER chmod 755 installMysql.sh
ssh root@$SERVER /root/installMysql.sh
done
搞定!