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

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

763291 次浏览

停止 MySQL 进程。

启动 MySQL 进程时,可以使用—— Skip-Grant-tables 选项。

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

列出所有用户;

SELECT * FROM mysql.user;

重置密码;

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

但是 别忘了

停止 MySQL 进程

正常启动 MySQL 进程(即不使用—— Skip-Grant-tables 选项)

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

不幸的是,您的用户密码是不可恢复的。它已经被散列了一个单向散列,如果你不知道它是不可逆的。我建议你和上面的陈燕一起去创造一个新的。

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

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

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

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

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

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

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

  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选项命名的文件的内容,更改每个 帐户密码。

    如果希望服务器输出显示在控制台窗口而不是日志文件中,还可以将 控制台选项添加到命令中。

    如果您使用 MySQL 安装向导安装 MySQL,您可能需要指定一个 默认文件选项:

    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 服务,右键单击它,然后选择 Properties 选项。“可执行文件路径”字段包含 默认文件设置。

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

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

这是对最有用答案的一个改进:

不需要重新启动 mysql 服务器
2]连接到网络 < br/>

的 MySQL 服务器的安全问题

不需要重新启动 MySQL 服务器。

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

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

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

跳过网络一起使用 跳过补助金表,以防止远程客户端连接。

来自: 参考文献: 重置-权限-通用

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

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

然后运行以下命令:

mysql> SELECT * FROM mysql.user;

之后复制加密的 md5密码给相应的用户,并且有几个在线密码解密应用可以在网上找到。使用此解密密码并在下次登录时使用此密码。 或使用以下命令更新用户密码:

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

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

虽然一个严格的,合乎逻辑的,计算机科学的对这个问题的解释是需要 都有“我如何检索我的 MySQL 用户名”还有“密码”-我认为这可能是有用的人也解决 或者的解释。换句话说..。

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

或者

2)密码

后一种情况似乎已经得到了充分的解决,所以我不会再为此烦恼了。下面是“如何检索我的 MySQL 用户名”这个案例的解决方案。嗨。

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

SELECT User FROM mysql.User;

它将打印一个包含所有 mysql 用户的表。

虽然你不能直接恢复一个 MySQL 密码没有暴力,可能有另一种方法-如果你已经使用 MySQL 工作台连接到数据库,并保存凭证到“保险库”,你是黄金。

在 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 线程,了解快速实现的源代码 + 可执行文件。

如果您对运行 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/

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

不要休息

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

sudo mysql -u root -p;

运行目标用户的 update password (例如,我的用户名是 mousavi,它的密码必须是 123456) :

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

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

FLUSH PRIVILEGES;

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

保存该文件。对于本例,该文件将命名为 C: mysql-init.txt。 它请求保存文件的管理权限

在 MySQL 5.7.6和 MariaDB 10.1.20(目前在2022年)之后,你可以:

更新一个可以访问 root 用户的 mysql 用户密码

ALTER USER 'some_user_name'@'localhost' IDENTIFIED BY 'a_super_secure_password';

更新 mysql root 用户

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

列出所有用户

select user from mysql.user;