MySQL报错server version for the right syntax to use near ‘EOF的解决方法

重置mysql用户root密码时,编写shell脚本,遇到报错:

ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘EOF
echo “新密码:123456″‘ at line 1

提示信息是SQL语法错误,最后解决方法是:删除EOF后面的所有空格。

原因很简单:在脚本中,<<EOF 和 EOF 之间的文本块被视为一个整体,直到遇到 EOF 标记为止。如此,EOF后面不允许再跟其他内容,需要马上换行。

这是重置root密码的shell脚本,供参考

# 修改root用户密码  
echo "原密码:$DB_PASSWORD"  
# 5.6.51版本的MySQL使用`--alter-password`选项替代`--alter-user`选项来修改密码  
mysql -u $DB_USER -p$DB_PASSWORD <<EOF  
ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PASSWORD';  
FLUSH PRIVILEGES;  
EOF  

echo "新密码:$NEW_PASSWORD"

(版权归cpury.com所有,转载请注明出处。)