ec2 LAMP REDhat发行版更改mysql密码错误

我在EC2平原Linux并希望改变我的MySQL密码
我试过了:

sudo mysqladmin -u root -p '***old***' password '***new****' 

那么它会提示我input密码
然后我进入***old***

但我不断收到错误消息

 mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)' 

问题:如何更改我目前的密码?

编辑:
当我把这个,在-p和旧密码之间没有空格,我得到一个定义列表

 sudo mysqladmin -u root -p'***old***' 

当我把这个

 sudo mysqladmin -u root -p password '***new***' 

我得到了与上面相同的错误信息

  1. 如果使用短选项表单( -p ),则选项和密码之间不能有空格。 此外,如果您将密码指定为命令的一部分,则不会提示您input该密码(但是,由于空间的原因,您的密码实际上被识别为单独的命令)。 (1)

    • 最好让系统提示你input密码 – 这样可以避免与空格,引号和特殊字符混淆,并且密码不会显示在你的历史logging中。 (请注意,旧密码被省略):

        sudo mysqladmin -u root -p密码“NEW_PASSWORD” 
  2. 包含特殊字符的密码必须用单引号括起来(您已经完成)。 (2)

  3. 或者,您可以使用mysql客户端和查询(3)来执行整个任务:

      mysql -u root -p
    input密码:
     mysql> UPDATE mysql.user SET Password = PASSWORD('NEW_PASSWORD')WHERE User ='root';
     mysql> FLUSH PRIVILEGES; 

    (注意上面的内容会改变所有'Hosts'的密码,你可以添加AND Host='localhost'来限制它只是localhost。)

    • 另外,在mysql提示符下,你可以使用:

        mysql>为root设置密码@'localhost'=密码('NEW_PASSWORD'); 

如果你不能直接login到mysql( mysql -u root -p ),那么你有一个不同的问题 – 可能与你的密码中的特殊字符有关(当在mysql_secure_installationinput特殊字符的密码时,我发现这是真的)。 MySQL手册介绍了如何在需要时重置根密码。