如何重置mysql root密码?

时间:2010-11-23 16:11:21

标签: mysql mysql-error-1045

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

# 1045 - Access denied for user 'root' @ 'localhost' (using password: NO)

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

UPDATE mysql.user SET Password = PASSWORD ('') WHERE User = 'root';
FLUSH PRIVILEGES;

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

我在使用FreeBSD 8.1,我的PhpMyadmin版本是2.11。

提前感谢您的回答。

8 个答案:

答案 0 :(得分:17)

我在此总结了我的解决方案: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

答案 1 :(得分:5)

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

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

mysqld_safe --skip-grant-tables --skip-networking

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

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

INSTEAD使用下面的5.7.6及更高版本

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

以下用户或5.7.5或更早版本的用户。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

答案 2 :(得分:0)

这个对我有用,没有副作用。 https://help.ubuntu.com/community/MysqlPasswordReset

答案 3 :(得分:0)

请按照以下链接中的说明重置root密码。您必须从mysql外部执行此操作。

重置MySql密码

忘记你的MySQL密码对你来说真是一件令人头痛的问题。在Windows下恢复MySql密码可以遵循一些简单的步骤 停止MySql

在继续之前,您必须停止MySql服务。在Windows环境中,转到“任务管理器”'和服务'选项卡找到MySQL并停止它。 编写Sql来更改密码

您需要做的就是创建一个文本文件并将以下两行放入其中。 UPDATE mysql.user SET Password = PASSWORD(' MyNewPass')WHERE User =' root&#39 ;; FLUSH特权;将它保存在C:\驱动器下,并为其命名' mysql-init.txt' 是时候自己重启MySQL了。

现在是时候重新启动你之前停止过的MySQl,但这次是从命令行开始的。 C:> C:\ mysql \ bin \ mysqld-nt --init-file = C:\ mysql-init.txt 完成了!

现在您可以使用新密码登录。完成后删除在上一阶段创建的文件。

还有一个链接(http://kaziprogrammingblog.osinweb.com/article/showarticle/Resetting-MySql-Password),我已经解释了同样的事情。

希望这会有所帮助.. :)

答案 4 :(得分:0)

在Windows上回答XAMPP:

  • 编辑C:\ xampp \ mysql \ bin \ my.ini并在[mysqld]下面插入skip-grant-tables
  • 从控制面板界面重启MySQL
  • 在phpMyAdmin窗口中,从顶部面板中选择SQL选项卡。这将打开SQL选项卡,我们可以在其中运行SQL查询。现在,在文本区域中键入以下查询,然后单击“转到”
  

UPDATE mysql.user SET Password = PASSWORD('password')WHERE User ='root'; FLUSH PRIVILEGES;

  • 删除my.ini文件中的skip-grant-tables
  • 从控制面板界面重启MySQL

DONE!

请注意,mysql root用户密码不必与phpmyadmin的密码相同。

答案 5 :(得分:0)

这是我所做的并且有效:
安装(rpm安装)后,执行vi /etc/my.cnf 这将为您提供设置datadir的路径。对我来说是datadir=/var/lib/mysqluser=root添加一行,并删除datadir路径中的所有内容:rm -rf /var/lib/mysql/*
现在点击命令:mysqld --initialize。 在某个位置生成临时密码。为此:
grep "A temporary password" /var/log/*
你会得到一句话: /var/log/mysqld.log:2018-05-01T15:13:47.937449Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &uosjoGfi9:K。所以对我来说&uosjoGfi9:K是我的临时密码 现在做一个mysql -u root -p。粘贴您从上面得到的临时密码。
您将处于mysql cli模式。现在做:
mysql> use mysql;
系统会要求您重置密码: ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
运行ALTER命令:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPswd';
你完成了。

答案 6 :(得分:0)

我正在使用MySQL Server 8,这就是我解决此问题的方式。

创建一个文件并相应地命名。我将其命名为reset.txt。将以下内容放在文件中,但更改MyNewPass。这将是您的新SQL密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

停止我的SQL服务器(转到服务并搜索MYSQL,然后右键单击它并停止)

现在在My SQLserver目录的bin文件夹中打开一个cmd。就我而言,是

C:\ Program Files \ MySQL \ MySQL Server 8.0 \ bin

执行以下命令。

mysqld.exe --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file="C:\reset.txt' 

注意:我的reset.txt文件在c驱动器中。给出正确的路径。检查my.ini文件在目录中。就我而言,它位于

C:\ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini

最后,重新启动SQL Server。检查您的新密码。

答案 7 :(得分:0)

就我而言,这是一个令人沮丧的 Windows Server 安装 (iis/php/mysql),所以这就是我所做的:

第 1 部分:删除旧的 MYSQL :

注意:如果你已经有数据,你应该备份它!

步骤 1 从控制面板卸载 MySQL。 (你应该知道怎么做)

第 2 步 以管理员身份运行命令提示符并执行以下命令以停止和删除 MySQL 服务。

Net stop MySQL
Sc delete MySQL

第 3 步 删除这些文件夹:

C:\Program Files\MySQL
C:\Program Files (x86)\MySQL
C:\ProgramData\MySQL

如果它存在:

C:\Users\[User-Name]\AppData\Roaming\MySQL

第 2 部分:安装 MYSQL

https://dev.mysql.com/downloads/installer/ 下载安装程序并安装 -MySQL 服务器 8.0.23

以管理员身份打开 cmd 并转到 c:\Program Files\MySQL\MySQL Server 8.0\bin\ 运行

mysqld --initialize --console
mysqld --install

现在启动服务(在运行面板中输入 services.msc)

现在回到控制台运行:

mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

就这样