通过shell脚本设置mysql的首次新密码

问题描述 投票:0回答:1

我正在尝试为前提系统编写一个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脚本实现。

mysql sh redhat
1个回答
0
投票

尝试使用这个-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');"
© www.soinside.com 2019 - 2024. All rights reserved.