如何检索我的MySQL用户名和密码?

时间:2008-08-07 03:54:15

标签: mysql

我丢失了我的MySQL用户名和密码。我该如何检索它?

11 个答案:

答案 0 :(得分:174)

  

停止MySQL进程。

     

使用--skip-grant-tables选项启动MySQL进程。

     

使用-u root选项启动MySQL控制台客户端。

列出所有用户;

SELECT * FROM mysql.user;

重置密码;

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

但是不要忘记

  

停止MySQL进程

     

正常启动MySQL进程(即没有--skip-grant-tables选项)

当你完成。否则,您的数据库的安全性可能会受到影响。

答案 1 :(得分:38)

不幸的是,您的用户密码无法恢复。如果您不知道这是不可逆转的,那么它已经被单向哈希散列。我建议使用上面的Xenph Yan,然后创建一个新的。

您还可以使用the manual中的以下步骤重置Windows上任何MySQL root 帐户的密码:

  1. 以管理员身份登录系统。
  2. 如果MySQL服务器正在运行,请将其停止。对于作为Windows服务运行的服务器,请转到 服务经理:
  3.   

    开始菜单 - >控制面板 - >管理工具 - >服务

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

    1. 创建一个文本文件并在其中放置以下语句。将密码替换为您要使用的密码。

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

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

    2. 保存文件。对于此示例,该文件将命名为 C:\ mysql-init.txt。
    3. 打开控制台窗口以进入命令提示符:

        

      开始菜单 - >运行 - > CMD

    4. 使用特殊的 - 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
      

      可以使用服务管理器找到相应的 - 默认文件设置:

        

      开始菜单 - >控制面板 - >管理工具 - >服务

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

    5. 服务器成功启动后,删除 C:\ mysql-init.txt
    6. 停止MySQL服务器,然后再次以正常模式重新启动它。如果将服务器作为服务运行,请从Windows服务窗口启动它。如果手动启动服务器,请使用您通常使用的任何命令。
    7. 您现在应该能够使用新密码以root身份连接到MySQL。

答案 2 :(得分:33)

这里最有用的答案的改进:

  

1]无需重启mysql服务器
  2]连接到网络的MySQL服务器的安全问题

无需重启MySQL服务器。

在更新mysql.user语句之后使用FLUSH PRIVILEGES;进行密码更改。

  

FLUSH语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。

--skip-grant-options使任何人都可以在没有密码和所有权限的情况下进行连接。因为这是不安全的,你可能想要

  

- skip-grant-tables - skip-networking 结合使用,以防止远程客户端连接。

来自:reference:resetting-permissions-generic

答案 3 :(得分:6)

虽然您无法直接恢复MySQL密码而没有强制执行,但可能还有另一种方法 - 如果您已使用MySQL Workbench连接到数据库,并且已将凭据保存到"金库",你是金色的。

在Windows上,凭据存储在%APPDATA%\ MySQL \ Workbench \ workbench_user_data.dat 中 - 使用CryptProtectData加密(不含任何其他熵)。解密很容易:

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

或者您可以查看此DonationCoder thread以获取快速实施的源代码+可执行文件。

答案 4 :(得分:4)

如果您具有运行mysql的服务器的root访问权限,则应使用此命令停止mysql服务器

sudo service mysql stop

现在使用此命令启动mysql

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

现在您可以使用

登录mysql
sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

可在此处找到完整说明http://www.techmatterz.com/recover-mysql-root-password/

答案 5 :(得分:3)

没有停机时间

在终端中运行以下命令以连接到DBMS(您需要root访问权限):

sudo mysql -u root -p;

运行目标用户的更新密码(我的示例用户名为mousavi,密码必须为123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

此时您需要执行刷新以应用更改:

FLUSH PRIVILEGES;

完成!你没有任何停止或重启mysql服务就做到了。

答案 6 :(得分:2)

使用现有用户从Windows cmd登录MySql:

  
    

mysql -u username -p
            输入密码:****

  

然后运行以下命令:

mysql> SELECT * FROM mysql.user;

之后,为相应的用户复制加密的md5密码,并且网上有几个在线密码解密的应用程序。使用此解密密码并在下次使用此密码登录。 或使用流动命令更新用户密码:

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

然后使用新密码和用户登录。

答案 7 :(得分:0)

虽然严格的,合乎逻辑的,计算机科学对op的问题的解释是要求两者“如何检索我的MySQL用户名”“密码” - 我认为有人也可以解决 OR 解释。换句话说......

1)如何检索我的MySQL用户名?

2)密码

后一种情况似乎已经得到了充分的解决,所以我不会理会它。以下是单独使用“如何检索我的MySQL用户名”的解决方案。 HIH。

要查找您的mysql用户名,请从mysql shell运行以下命令...

SELECT User FROM mysql.user;

它将打印所有mysql用户的表。

答案 8 :(得分:0)

对于窗口用户,您可以按照此guide重设密码

答案 9 :(得分:0)

保存文件。对于此示例,文件将命名为C:\ mysql-init.txt。 它要求管理权限来保存文件

答案 10 :(得分:0)

如果您碰巧设置了ODBC,则可以从ODBC配置文件中获取密码。这是在Linux的/etc/odbc.ini和Windows中的注册表中的Software / ODBC文件夹中(有几个 - 可能需要一些搜索)