如何重置mysql root密码?

Posted

技术标签:

【中文标题】如何重置mysql root密码?【英文标题】:How to reset mysql root password? 【发布时间】:2011-05-14 13:47:20 【问题描述】:

我的 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。

提前感谢您的回答。

【问题讨论】:

【参考方案1】:

在我的情况下,它是一个令人沮丧的 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 服务器 8.0\bin\ 运行

mysqld --initialize --console
mysqld --install

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

现在回到控制台运行:

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

就是这样

【讨论】:

【参考方案2】:

我正在使用 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 服务器 8.0\my.ini

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

【讨论】:

我尝试了这个解决方案,但我仍然收到错误消息,提示我无法连接到数据库。 @wolfblitza 当您尝试 mysqld 命令时,您是否在管理员 cmd 中尝试过。如果您没有这样做,请告诉我您是否遇到相同的错误。 是的,我在管理员中运行它【参考方案3】:

这是我所做的,并且成功了: 安装(rpm 安装)后,执行vi /etc/my.cnf。 这将为您提供设置 datadir 的路径。对我来说是datadir=/var/lib/mysql。 在user=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'; 你完成了。

【讨论】:

【参考方案4】:

Windows 上 XAMPP 的答案:

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

UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';刷新特权;

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

完成!

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

【讨论】:

【参考方案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;

在下面使用 5.7.6 及更高版本

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

OR 用户低于 5.7.5 或更早版本。

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

【讨论】:

您应该尝试在答案正文中包含重要部分并使用链接作为参考。【参考方案6】:

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

重置MySql密码

忘记您的 MySQL 密码可能会让您非常头疼。这里有一些简单的步骤,您可以按照这些步骤在 Windows 下恢复 MySql 密码 停止 MySql

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

您需要做的就是创建一个文本文件并将以下两行放入其中。 UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';同花顺特权;将其保存在 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) 我已经解释了同样的事情。

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

【讨论】:

【参考方案7】:

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

【讨论】:

请不要多次发布完全相同的答案。如果问题是重复的,请将其标记为这样。 上面的 sn-p 中缺少 - 尽管在异地摘要中进行了解释。 1) 运行第一个 sudo mysqld... 后,切换到不同的终端窗口。 2)运行mysqladmin shutdown时提示输入新密码:sudo mysqladmin shutdown -u root -p

以上是关于如何重置mysql root密码?的主要内容,如果未能解决你的问题,请参考以下文章

如何重置忘记的 MySQL root 密码?

如何重置mysql root密码?

如何重置mysql root密码?

MySQL:如何重置或更改 MySQL root 密码?

如何重置mysql root密码

如何在Linux中重置MySQL或MariaDB root密码