我刚刚在Ubuntu上安装了MySQL,并且root用户无法登录:)
我该如何找回密码?使用空白输入密码不起作用。
你可以通过在运行服务器时使用--skip-grant-tables
root(或使用sudo)运行以下命令来重置root密码,并在没有密码的情况下登录:
# service mysql stop
# mysqld_safe --skip-grant-tables &
$ mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
现在,你应该可以使用新密码以root用户身份登录了。
也可以在其中/home/$USER/.mysql_history
或重设密码/root/.mysql_history
的用户中找到重设密码的查询,但是以上操作始终有效。
注意:在MySQL 5.7之前,该列的名称是password
而不是authentication_string
。将上面的行替换为
mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
@Benjamin我做了回答中的所有步骤,但是我仍然拒绝用户'root'@'localhost'的访问-任何想法为什么?
对于MySql 5.7:更新mysql.user SET authentication_string = PASSWORD('MyNewPass'),password_expired ='N'WHERE User ='root'AND Host ='localhost';
在尝试了所有这些
dpkg
方法和下面的方法之后,并让一切都mysql-sever-5.7
无法正常工作(顺便说一句,我在使用16.04和),我感到非常沮丧,我注意到如果我使用sudo进行连接,mysql将接受我的新凭据。即sudo mysql -u root -p
没有须藤我得到Access denied for user 'root'@'localhost'
。我以前从来没有使用过sudo,也没有在这里提到它,但是经过一个令人沮丧的小时之后,这似乎是解决方案。@马特在这里一样。
sudo
在使用mysql之前,我从未使用过,现在必须使用吗?我不明白为什么我必须成为root Linux用户才能访问mysql中的root帐户。这种行为使我想起了postgresql。对于只能以shell root身份登录的任何人,请查看此askubuntu.com/questions/766334/…