如何重置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删除 my.ini 文件中的 skip-grant-tables 从控制面板界面重启 MySQLUPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';刷新特权;
完成!
请注意,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密码?的主要内容,如果未能解决你的问题,请参考以下文章