介绍
基本信息
作者:朱明宇
名称:批量修改多个 MySQL root 的初始密码
作用:批量修改多个 MySQL root 的初始密码
使用方法
1. 确认 MariaDB&MySQL 已提前装好
2. 在此脚本的分割线内写入相应的内容
3. 给此脚本添加执行权限
4. 执行此脚本
脚本分割线里的变量
1. nm=192.168.4.0 #网段,网段必须为 C 类网段,请保证格式和前三个网络位一定正确
2. sip=51 #起始 ip,ip 的范围是 0-255
3. lip=53 #结束 ip,ip 的范围是 0-255
4. pd=123456 #想要修改的 MySQL 密码,至少必须要 6 个数
注意
此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
脚本
#!/bin/bash
####################### Separator ########################
nm=192.168.4.0
sip=51
lip=53
pd=123456
####################### Separator ########################
fnm=${nm%.*}
set timeout 3
rpm -q expect
if [ $? -ne 0 ];then
yum -y install expect &> /dev/null
fi
for i in `seq $sip $lip`
do
echo $fnm.$i
ssh $fnm.$i 'grep validate_password_policy=0 /etc/my.cnf'
if [ $? -ne 0 ];then
ssh $fnm.$i 'sed -i "/^\[mysqld\]$/a validate_password_policy=0" /etc/my.cnf'
fi
ssh $fnm.$i 'grep validate_password_length=6 /etc/my.cnf'
if [ $? -ne 0 ];then
ssh $fnm.$i 'sed -i "/^\[mysqld\]$/a validate_password_length=6" /etc/my.cnf'
fi
ssh $fnm.$i 'systemctl restart mysqld'
a=`ssh $fnm.$i "grep 'password is generated for root@localhost' /var/log/mysqld.log" |tail -1 | awk '{print $NF}'`
expect << EOF
spawn ssh $fnm.$i "mysqladmin -uroot -p password $pd "
expect "Enter password:" {send "$a\r"}
expect "#" {send "\r"}
EOF
done