我正在尝试为前提系统编写一个shell脚本。操作系统是Red Hat。我的脚本在下面,除了从默认生成的密码中设置新密码(从文件路径/ etc / .mysql_secret
中获取新密码)之外,其他所有功能都正常运行#!/usr/bin/sh
# MYSQL DEPLOYMENT
#variables
hostId="localhost"
newPasswrod="password"
newDatabase="mydb"
newUser="mymysql"
#install mysql with rpm files.
echo "installing mysql with rpm files."
rpm -ivh perl-Data-Dumper-2.145-3.el7.x86_64.rpm
rpm -ivh lib64numa1-2.0.12-1.mga7.x86_64.rpm
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
tar xvf MySQL-5.6.46-1.el7.x86_64.rpm-bundle.tar
rpm -ivh MySQL-shared-5.6.46-1.el7.x86_64.rpm
rpm -ivh MySQL-shared-5.6.46-1.el7.x86_64.rpm
rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm
rpm -e --nodeps "mariadb-libs-5.5.64-1.el7.x86_64"
rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm
mysqlPasswordFile="/root/.mysql_secret"
echo "retrieve password from default location"
#retrieve password from default location example with below parameter.
# The random password set for the root user at Mon Jan 13 11:00:59 2020 (local time): 4ug4P6drlfrN_vaE
mysqlPassword=` grep '.*' $mysqlPasswordFile | cut -d : -f 4-`
mysqlPassword=`echo $mysqlPassword | sed 's/ *$//g'`
echo "default password is : $mysqlPassword"
# mysqlPassword=4ug4P6drlfrN_vaE
# start mysql server
sudo service mysql start
echo "started mysql"
sleep 1s
# set new passwrd and create new user.
echo "set new passwrd and create new user"
if [ $mysqlPassword ] ; then
mysql -u root -h "$hostId" -p"$mysqlPassword" -e "set password for root@'localhost'=password('$newPasswrod')"
mysql -u root -h "$hostId" -p"$newPasswrod" -e "SHOW DATABASES"
mysql -u root -h "$hostId" -p"$newPasswrod" -e "FLUSH PRIVILEGES;"
fi
在设置新密码时抛出以下错误
错误1862(HY000):您的密码已过期。要登录,您必须使用支持过期密码的客户端对其进行更改。
通过以下方法尝试直接设置新密码:-
#Default password 4ug4P6drlfrN_vaE
mysql -u root -p4ug4P6drlfrN_vaE
set password for root@'localhost'=password('mysql');
我想通过shell脚本实现。
尝试使用这个-connect-expired-password
"default_password_lifetime = 0" >> /etc/mysql/my.cnf
mysql -u root -p<current dummy password> --connect-expired-password -e "SET PASSWORD = PASSWORD('new password');"