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

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

停止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选项)

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

不幸的是你的用户密码是无法挽回的。 如果你不知道是不可逆的,那么它就被单向哈希散列。 我build议与Xenph Yan一起去创build一个新的。

您也可以使用手册中的以下步骤重置Windows上任何MySQL 帐户的密码:

  1. 以pipe理员身份login到您的系统。
  2. 停止MySQL服务器,如果它正在运行。 对于作为Windows服务运行的服务器,请转到服务pipe理器:

开始菜单 – >控制面板 – >pipe理工具 – >服务

然后在列表中findMySQL服务,并停止它。 如果您的服务器不作为服务运行,则可能需要使用任务pipe理器强制停止。

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

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

    UPDATEFLUSH语句每个都必须写在一行上。 UPDATE语句将重置所有现有根帐户的密码,并且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 

    可以使用服务pipe理器find适当的–defaults-file设置:

    开始菜单 – >控制面板 – >pipe理工具 – >服务

    在列表中findMySQL服务,右键单击它,然后select“属性”选项。 “可执行文件path”字段包含–defaults-file设置。

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

您现在应该能够以root身份使用新密码连接到MySQL。

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

1]不需要重启mysql服务器
2]连接到networking的MySQL服务器的安全问题

没有必要重新启动MySQL服务器。

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

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

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

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

from:reference: resetting-permissions-generic

如果你不能直接恢复一个MySQL密码而没有暴力破解,那么可能还有另外一种方法 – 如果你已经使用MySQL Workbench连接到数据库,并且已经把证书保存到了“Vault”中,那么你就是个好主意。

在Windows上,凭据存储在%APPDATA%\ MySQL \ Workbench \ workbench_user_data.dat中 – 使用CryptProtectData进行encryption(无需任何额外的熵)。 解密是容易的peasy:

 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线程的源代码+可执行的快速和脏的实现。

如果你有mysql的服务器的root权限,你应该使用这个命令停止mysql服务器

 sudo service mysql stop 

现在使用这个命令启动mysql

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

现在你可以使用login到mysql了

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

完整的说明可以在这里findhttp://www.techmatterz.com/recover-mysql-root-password/

使用现有用户从Windows cmdloginMySql:

mysql -u用户名-p
input密码:****

然后运行以下命令:

 mysql> SELECT * FROM mysql.user; 

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

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

然后使用新密码和用户login。

虽然严格的,逻辑的,计算机科学对操作系统问题的解释是要求“我如何检索我的MySQL用户名” “密码” – 我认为对于解释OR解释也许是有用的。 换一种说法 …

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

要么

2)密码

后一种情况似乎已经得到了充分的解决,所以我不会为此而烦恼。 以下是针对“我如何检索我的MySQL用户名”情况的解决scheme。 HIH。

要find你的mysql用户名,从mysql shell运行以下命令…

SELECT用户从mysql.user;

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

如果您碰巧设置了ODBC,则可以从ODBCconfiguration文件中获取密码。 这在Linux的/etc/odbc.ini中,在Windowsregistry中的Software / ODBC文件夹中(有几个 – 可能需要一些狩猎)