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

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

0

9 答案

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

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

0
额外
@Xenph,你为什么说“用-u root选项启动MySQL控制台客户端”?使用 --skip-grant-tables 启动服务器时忽略 -u 是没有意义的。
额外 作者 Pacerier,
在MySQL 5.7。*中, mysql.user 中不存在称为 password 的列,而是使用 authentication_string
额外 作者 whiteletters in blankpapers,
使用 dpkg-reconfigure mysql-server-5.5 命令重置根MySQL密码有什么意义?
额外 作者 phillipsK,
我的SQL 5.5。 select命令显示一个加密的密码。我如何看到实际的密码?
额外 作者 testerjoe2,
认为您不需要重新启动守护程序来重置普通用户。只是“FLUSH特权”;更新用户密码后。 --skip-grant-tables只需要root用户密码重置!通常不推荐用于标准用户重置。
额外 作者 Amos Folarin,
我发现这个+ stackoverflow.com/a/35277160/1604601 非常有帮助
额外 作者 Alien Life Form,

An improvement to the most useful answer here:

1] No need to restart the MySQL server
2] Security concern for a MySQL server connected to a network

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

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

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

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

使用 - skip-grant-tables 连同 - skip-networking 一起防止远程客户端连接。

from: reference: resetting-permissions-generic

0
额外
很大的改进。
额外 作者 trusktr,
@ThinkingMonkey,这是否假设当前登录用户有权修改 mysql.user ?通常情况下,情况并非如此。
额外 作者 Pacerier,

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

在Windows上,证书存储在%APPDATA%\ MySQL \ Workbench \ workbench_user_data.dat 中 - 使用 CryptProtectData (没有任何额外的熵)。解密很容易:

std::vector 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 output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

或者,您可以查看此 DonationCoder主题获取源代码+可执行的快速和肮脏的实现。

0
额外
但相对来说,很少有人使用Workbench。
额外 作者 Pacerier,
这是另一个实现,可以在使用Visual Studio构建以恢复Workbench存储的用户名和密码信息后运行: github.com/ wclear / MySQLWorkbenchPasswordViewer
额外 作者 wclear,
这很完美。在线程snemarch中有一个带有源代码的exe文件,用于检索存储在我的MySQL Workbench库中的用户帐户密码。尽管如果我有权读取或更新用户表,这些其他方法也可能工作。
额外 作者 RobbZ,

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

您还可以使用手册中的以下过程:重置Windows上任何MySQL root 帐户的密码:

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

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

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

  1. Create a text file and place the following statements in it. Replace the password with the password that you want to use.

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

    The UPDATE and FLUSH statements each must be written on a single line. The UPDATE statement resets the password for all existing root accounts, and the FLUSH statement tells the server to reload the grant tables into memory.

  2. Save the file. For this example, the file will be named C:\mysql-init.txt.
  3. Open a console window to get to the command prompt:

    Start Menu -> Run -> cmd

  4. Start the MySQL server with the special --init-file option:

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
    

    If you installed MySQL to a location other than C:\mysql, adjust the command accordingly.

    The server executes the contents of the file named by the --init-file option at startup, changing each root account password.

    You can also add the --console option to the command if you want server output to appear in the console window rather than in a log file.

    If you installed MySQL using the MySQL Installation Wizard, you may need to specify a --defaults-file option:

    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
    

    The appropriate --defaults-file setting can be found using the Services Manager:

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

    Find the MySQL service in the list, right-click on it, and choose the Properties option. The Path to executable field contains the --defaults-file setting.

  5. After the server has started successfully, delete C:\mysql-init.txt.
  6. Stop the MySQL server, then restart it in normal mode again. If you run the server as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.

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

0
额外
@Jake - 谢谢你的回答。我想给它一个大拇指,但由于某种原因,stackoverflow不会允许我这样做,因为名誉点。你的解释“不幸的是你的用户密码是不可挽回的,它已经用单向哈希散列,如果你不知道是不可逆的”是我理解为什么我在google上阅读的所有内容只给了我指示更改我的密码。好的解释比单独的指导更具有洞察力。
额外 作者 dsdsdsdsd,
为什么你的 mysqld-nt 而不是 mysqld
额外 作者 Pacerier,
顺便说一句,是否有一个非文件选项的 - init-file ? (类似于mysql.exe的 - execute 命令。)
额外 作者 Pacerier,
+1实际上是回答问题。
额外 作者 davmac,

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

    

MySQL -u用户名-p
            输入密码:****

  

然后运行以下命令:

mysql> SELECT * FROM mysql.user;

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

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

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

0
额外

尽管严格,逻辑,计算机科学对操作系统问题的解释是要求 “我如何检索我的MySQL用户名”“密码” - 我认为对某人来说,解决解释也许是有用的。换一种说法 ...

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

或</强>

2)密码

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

要找到你的mysql用户名,从mysql shell运行以下命令...

SELECT用户FROM mysql.user;

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

0
额外
这是一个迟到的答案,只有当您的解决方案与已发布或已接受的方案明显不同时,才应该发布这些答案。这不是在这种情况下,特别是你的答案重复一个接受的答案。
额外 作者 m.cekiera,

如果你有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');

Full instructions can be found here http://www.techmatterz.com/recover-mysql-root-password/

0
额外

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

0
额外

无需停机时间

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

sudo MySQL -u root -p;

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

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

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

FLUSH PRIVILEGES;

完成!你没有停止或重新启动mysql服务。

0
额外