所以我正在连接到AWS EC2 Ubuntu 16.04实例。作为我的制作脚本的一部分,我做了:
mysql -u root -pmy-secret -e "source resetDb.sql;" >> lastRun.log
此resetDb.sql
具有创建和填充数据库信息的查询。然后继续使用该应用程序。
事情是,mysql通过抛出
来拒绝我的访问 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
但是如果我用mysql -u root -p
连接并手动输入密码,它就会让我进入控制台,所以这让我看到密码是对的。
我在服务器上获得此输出
$ mysql --version
mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper
$ uname -a
Linux ip-xx.xx.xx.xx 4.4.0-1038-aws #47-Ubuntu SMP Thu Sep 28 20:05:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
我在另一个关于刷新权限和重置root密码的问题中看到了,但我的密码是正确的,所以对我没用。
任何人都有线索?我们的想法是运行脚本来自动设置整个服务器。提前谢谢。
答案 0 :(得分:3)
您的密码正在使用"特殊"命令shell正在解释的字符。请注意密码中的这些字符:
$& ! \ []< > `
将您的密码包含在Linux的单引号中:' my_%PATH_problem& password'。对于Windows,请使用双引号。您还可以使用bakslash \
答案 1 :(得分:0)
是否曾尝试在密码周围使用一些引号? 试试这个:
mysql -u root -p"your_passord" -e "SHOW DATABASES"
你甚至可以把它放在其中:
mysql --user="root" --password="your_passord" -e "SHOW DATABASES"
如果你想要一些永久的东西,你似乎可以尝试this(从不测试它):
答案 2 :(得分:0)
另一种可能性是您的root密码具有特定的主机限制。
所以,如果你运行
select user,host,password from mysql.user;
您可能会看到root @ localhost,root @ 127.0.0.1和root @%都存在,但密码不同。