在 MySQL 中为 root 帐户输入新密码时我不小心做了以下事情:
mysqladmin -u root -p password 'somepassword
您可以看到我错过了第二条引文。而我得到了类似这样的内容。
>
所以我输入了'
完成声明,但现在密码不起作用了。
我不是在问如何重置或恢复密码(我知道如何做,但我试图避免重新启动服务)。问题是:如果出现这种输入错误,是否可以在这里输入密码。
我知道我可以使用 init 文件启动 MySQL 服务器并重置密码,但我想知道是否有人知道上面的内容是什么意思。这是新行吗?是否可以手动输入?
答案1
然后只需重置您的 MySQL 密码。这是我在 Ubuntu 12.04 中执行的操作。在其他设置中应该也可以类似地工作。这被认为是一种不安全的重置 MySQL 密码的方法,因为您必须以开放/非基于凭据的模式启动 MySQL 才能执行此操作。但如果您这样做然后正常重新启动 MySQL,您应该没问题。
首先,我停止 MySQL 服务:
sudo service mysql stop
然后我用--skip-grant-tables
标志重新启动它:
sudo mysqld --skip-grant-tables &
现在您可以无需密码登录,如下所示:
mysql -u root mysql
然后我运行以下查询来重置密码。请注意,您应该将值更改为YOURNEWPASSWORD
您实际想要使用的密码:
UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;
现在已完成,退出 MySQL 并重新启动守护进程,如下所示:
sudo service mysql restart
如果这种方法不起作用,请使用 akillall
来终止所有实例mysqld
:
killall mysqld
然后像平常一样重新启动 MySQL 服务:
sudo service mysql start
新密码已设置完毕,您就可以开始了。
答案2
瞎猜吧,不过看起来你的密码现在嵌入了换行符。试着\n
在密码字符串末尾添加,看看是否有效,或者在密码末尾插入换行符/换行控制字符(取决于终端)。
我也是刚刚才想到的。你能再说一遍吗?例如
mysqladmin -u root -p 'password RET
>' whatever-you-want-to-do RET
显然有点麻烦。没有安装进行测试,否则我会这样做,但值得一试。
注意:我感觉这件事以前曾经发生在我身上。
答案3
如果您确切地知道您输入的内容,那么您可以使用该值登录 - 但您需要在命令行上指定它,而不是通过 ini 文件或密码 pro,pt(其中换行符被解释为输入的结束)。例如:
mysqladmin -u root -p"somepassword\n\n\n" password 'newpassword'
如果您无法重新创建之前输入的值,则需要沿着不同的 ini 文件路线走。
答案4
如果有人来到这里我可以通过运行以下命令犯类似错误后登录到mysql:
mysql -u root -p'somepassword
> '
Linux 自动添加“>”符号