从命令连接拒绝MySQL访问

时间:2017-11-16 19:06:35

标签: mysql linux amazon-web-services ubuntu amazon-ec2

所以我正在连接到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密码的问题中看到了,但我的密码是正确的,所以对我没用。

任何人都有线索?我们的想法是运行脚本来自动设置整个服务器。提前谢谢。

3 个答案:

答案 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 @%都存在,但密码不同。