如何重置mysql root密码?

4m0*_*i4c 15 mysql mysql-error-1045

我的phpmyadmin有点问题,实际上我不小心删除了多个用户帐户.因为没有错误就无法连接:

# 1045 - Access denied for user 'root' @ 'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)

我之前在网上搜索过一点,甚至是技术:

UPDATE mysql.user SET Password = PASSWORD ('') WHERE User = 'root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

不起作用,或者我不明白它是如何工作的.

我在FreeBSD 8.1上,我的PhpMyadmin版本是2.11.

提前感谢您的回答.

Ale*_*xey 18

我在这里总结了我的解决方案:http://snippets.dzone.com/posts/show/13267

sudo stop mysql
sudo mysqld --skip-grant-tables --skip-networking

mysql
mysql> update mysql.user set password = password('your_new_password') where user = 'root';
mysql> flush privileges;
mysql> exit;
sudo mysqladmin shutdown
sudo start mysql
Run Code Online (Sandbox Code Playgroud)

  • 上述代码段中缺少 - 尽管在非现场摘要中进行了解释.1)运行第一个`sudo mysqld ...`后,切换到另一个终端窗口.2)运行mysqladmin shutdown时提示输入新密码:`sudo mysqladmin shutdown -u root -p` (2认同)

use*_*390 5

对于mysql 5.7.16或更高版本,我发现(来自mysql.com)是工作解决方案.以下是与先前旧版本不同的一些要点

1)我使用下面的命令在安全模式下运行mysql,根据其他一些实际上对我工作正常的引用(mysql 5.7.16 ubuntu 16.04).

mysqld_safe --skip-grant-tables --skip-networking
Run Code Online (Sandbox Code Playgroud)

2)以下更新stmt不适用于更高版本(即5.7及以上版本)

-- NOT Working for 5.7 and later
UPDATE mysql.user SET Password = PASSWORD ('') WHERE User = 'root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

INSTEAD使用以下5.7.6及更高版本

UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

或者以下用户为5.7.5或更早版本.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
Run Code Online (Sandbox Code Playgroud)