我试图从bash脚本运行MySQL命令:
mysql --user=[USER] --password=[PASSWORD] --database=[DATABASE] --execute="DELETE FROM table WHERE created_at < NOW() - INTERVAL 7 DAY"
在bash脚本和终端中,我都得到了同样的错误:
ERROR 1045 (28000): Access denied for user '[USER]'@'localhost' (using password: YES)
我已经测试过运行mysql -u [USER] -p
并且会连接,所以我知道我的凭据是正确的。
我错过了什么?我在网上看到一些事情表明端口可能有误,但它已全部在localhost
上运行,这是正确的
答案 0 :(得分:2)
想通了。问题不是权限,而是密码本身。我需要在密码中转义$
,因此代码更改为以下内容(使用密码pass$word
):
mysql --user=[USER] --password=pass\$word --database=[DATABASE] --execute="DELETE FROM table WHERE created_at < NOW() - INTERVAL 7 DAY"
现在就像一个魅力。
答案 1 :(得分:1)
1.如果没有添加mysql.user
USER
和localhost
查看您的mysql表格USER
2.如果USER
有权进入此数据库,请检查您的USER
权限。