如何获取我的MySQL用户名和密码?

时间:2020-03-05 18:38:14  来源:igfitidea点击:

我丢失了我的MySQL用户名和密码。我如何找回它?

解决方案

回答

Stop the MySQL process.
  
  Start the MySQL process with the --skip-grant-tables option.
  
  Start the MySQL console client with the -u root option.

列出所有用户;

SELECT * FROM mysql.user;

重设密码;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

但不要忘记

Stop the MySQL process  
  
  Start the MySQL Process normally (i.e. without the --skip-grant-tables option)

完成后。否则,数据库的安全性可能会受到威胁。

回答

不幸的是,用户密码无法找回。它已经用一种单向散列进行了散列,如果我们不知道该散列是不可逆的。我建议与上面的Xenph Yan一起使用,然后创建一个新的。

我们还可以使用手册中的以下步骤为Windows上的任何MySQL根帐户重设密码:

  • 以管理员身份登录到系统。
  • 如果MySQL服务器正在运行,请停止它。对于作为Windows服务运行的服务器,请转到服务管理器:
Start Menu -> Control Panel -> Administrative Tools -> Services

然后在列表中找到MySQL服务,并停止它。如果服务器是
不能作为服务运行,则可能需要使用任务管理器强制其停止。

  • 创建一个文本文件,并将以下语句放入其中。用我们要使用的密码替换密码。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;

UPDATE和FLUSH语句必须分别写在一行上。 UPDATE语句重置所有现有根帐户的密码,而FLUSH语句告诉服务器将授权表重新加载到内存中。

  • 保存文件。对于此示例,文件将命名为C:\ mysql-init.txt。
  • 打开控制台窗口以转到命令提示符:
Start Menu -> Run -> cmd
  • 使用特殊的--init-file选项启动MySQL服务器:
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt

如果将MySQL安装到C:\ mysql以外的位置,请相应地调整命令。服务器在启动时执行由--init-file选项命名的文件的内容,更改每个root帐户密码。如果希望服务器输出显示在控制台窗口中而不是日志文件中,还可以在命令中添加--console选项。如果使用MySQL安装向导安装了MySQL,则可能需要指定--defaults-file选项:

C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt

可以使用服务管理器找到适当的--defaults-file设置:

Start Menu -> Control Panel -> Administrative Tools -> Services

在列表中找到MySQL服务,右键单击它,然后选择"属性"选项。可执行文件的路径字段包含--defaults-file设置。

  • 服务器成功启动后,删除C:\ mysql-init.txt。
  • 停止MySQL服务器,然后再次以正常模式重新启动它。如果将服务器作为服务运行,请从Windows服务窗口中启动它。如果手动启动服务器,请使用通常使用的任何命令。

现在,我们应该可以使用新密码以root用户身份连接到MySQL。