MySQL在5.7之后的版本加入很多安全特性,比如5.7.6之后的版本,安装时引入默认随机密码,随机密码生成的位置在/var/log/mysqld.log
我们在使用root时需要修改默认密码,方便后续操作,也避免安全问题。
因为涉及的机器相对较多,做了自动自动安装脚本。
在arm架构机器上找不到5.7的rpm包,安装了8.0的版本。8.0的版本同样在安装的时候也会生成默认随机密码,文件位置一样,但是日志输出的文本会变化,导致密码位置不一样,5.7用awk是在11的位置,8.0是在13的位置。
此处还需要注意的是8.0之后修改root使用的语法已经不支持直接set password=password('$pwd');
# 5.7 修改root脚本
read -t 600 -p "请输入root原密码:" root_pwd
if [ -z "$root_pwd" ]; then
echo "root原密码不能为空!"
exit
fi
mysql_init_psw=`cat /var/log/mysqld.log | grep "A temporary password" | awk '{print $11}'`
mysql -uroot -p$mysql_init_psw -e "set password=password(\"${root_pwd}\");
flush privileges;" --connect-expired-password -vv
# 8.0 修改root密码
read -t 600 -p "请输入root原密码:" root_pwd
if [ -z "$root_pwd" ]; then
echo "root原密码不能为空!"
exit
fi
mysql_init_psw=`cat /var/log/mysqld.log | grep "A temporary password" | awk '{print $13}'`
mysql -uroot -p$mysql_init_psw -e "alter user 'root'@'localhost' identified WITH mysql_native_password by '${root_pwd}';
flush privileges;" --connect-expired-password -vv