我在 ec2 plain linux 上并且希望更改我的 mySQL 密码,
我尝试过:
sudo mysqladmin -u root -p '***old***' password '***new****'
然后它提示我输入密码,
然后我输入,***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
),则选项和密码之间不能有空格。此外,如果将密码指定为命令的一部分,则不应提示您输入密码(但是,由于有空格,您的密码实际上会被识别为单独的命令)。(1)最好让系统提示您输入密码 - 这样可以避免与空格、引号和特殊字符混淆,并且密码不会显示在您的历史记录中。(请注意,省略了旧密码):
sudo mysqladmin -u root -p 密码'NEW_PASSWORD'
包含特殊字符的密码必须用单引号括起来(您已经这样做了)。(2)
或者,您可以使用 mysql 客户端和查询执行整个任务(3):
mysql -u 根 -p 输入密码: mysql> 更新 mysql.user 设置密码 = PASSWORD ('NEW_PASSWORD') 其中用户 = 'root'; mysql>刷新权限;
(请注意,以上操作将更改所有“主机”的密码。您可以添加
AND Host='localhost'
以将其限制为仅限本地主机。)或者,在 mysql 提示符下,您可以使用:
mysql> 设置'root'@'localhost' 的密码 = PASSWORD('NEW_PASSWORD');
如果您无法直接登录 mysql ( mysql -u root -p
),则您遇到了其他问题 - 可能与密码中的特殊字符有关(我发现在 中输入包含特殊字符的密码时会出现这种情况mysql_secure_installation
)。MySQL 手册介绍了如何在需要时重置 root 密码,这里。