bash 脚本 mysql 重置密码

bash 脚本 mysql 重置密码

看来这个代码不起作用,我尝试在我的 debian 7 机器上使用它,但它给我的密码是错误的。

# Please confirm that you want to reset the MySQL passwords CONFIRM="n" echo -n "Please confirm MySQL password reset. Continue? (y/N): " read -n 1 CONFIRM_INPUT if [ -n "$CONFIRM_INPUT" ]; then   CONFIRM=$CONFIRM_INPUT fi   echo  
# check if we are resetting the MySQL password if [[ "${CONFIRM}" =~ ^[Yy]$ ]]; then

# Kill any mysql processes currently running
echo 'Shutting down any mysql processes...'
service mysql stop
killall -vw mysql

# Start mysql without grant tables
mysqld_safe --skip-grant-tables >res 2>&1 &

echo 'Resetting password... hold on'

# Sleep for 5 while the new mysql process loads (if get a connection error you might need to increase this.)
sleep 5

# Creating the password
DB_ROOT_PASS_LEN=`shuf -i 20-30 -n 1`
DB_ROOT_PASS=`pwgen -scn $DB_ROOT_PASS_LEN 1`
DB_ROOT_USER='root'

# Update root user with new password
mysql mysql -e "UPDATE user SET Password=PASSWORD('$DB_ROOT_PASS') WHERE User='$DB_ROOT_USER';FLUSH PRIVILEGES;"

echo 'Cleaning up...'

# Kill the insecure mysql process
killall -v mysqld

# Starting mysql again
service mysql restart

echo
echo "Password reset has been completed"
echo 
echo "MySQL root password: $DB_ROOT_PASS"
echo 
echo "Remember to store this password safely!"
else
    echo "Password reset was aborted"
fi

echo

答案1

不同版本的 MySQL 对密码存储的要求可能有所不同。此外,其要求可能会受到 my.cnf 中的设置的影响。您的密码重置使用的格式可能不符合 my.cnf 设置的要求,但这种可能性很小。

https://stackoverflow.com/questions/1892607/mysql-password-hashing-method-old-vs-new

相关内容