看来这个代码不起作用,我尝试在我的 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