Answers:
停止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选项)
完成后。否则,数据库的安全性可能会受到威胁。
dpkg-reconfigure mysql-server-5.5
命令重置MySQL根密码有什么意义?
-u
服务器启动时会被忽略--skip-grant-tables
。
mysql.user
叫password
,使用authentication_string
来代替。
不幸的是,您的用户密码无法找回。它已经用一种单向散列进行了散列,如果您不知道它是不可逆的。我建议与上面的Xenph Yan一起使用,然后创建一个新的。
您还可以使用手册中的以下步骤为Windows上的任何MySQL 根帐户重设密码:
开始菜单->控制面板->管理工具->服务
然后在列表中找到MySQL服务,并停止它。如果您的服务器未作为服务运行,则可能需要使用任务管理器强制其停止。
创建一个文本文件,并将以下语句放入其中。用您要使用的密码替换密码。
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
在UPDATE和FLUSH每个语句必须在一行内写完。的UPDATE语句重置所有现有的根帐户的密码,而FLUSH语句告诉服务器重装授权表到内存中。
打开控制台窗口以转到命令提示符:
开始菜单->运行-> 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设置:
开始菜单->控制面板->管理工具->服务
在列表中找到MySQL服务,右键单击它,然后选择“属性”选项。可执行文件的路径字段包含--defaults-file设置。
现在,您应该可以使用新密码以root用户身份连接到MySQL。
mysqld-nt
而不是mysqld
?
--init-file
吗?(类似于mysql.exe的--execute
命令。)
此处最有用答案的改进:
1]无需重启mysql服务器
2]连接到网络的MySQL服务器的安全问题
无需重新启动MySQL服务器。
FLUSH PRIVILEGES;
在更新mysql.user语句后使用以更改密码。
FLUSH语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。
--skip-grant-options
启用该功能后,任何人都无需密码即可拥有所有特权进行连接。因为这是不安全的,所以您可能想要
将--skip-grant-tables与--skip-networking结合使用可防止远程客户端连接。
mysql.user
吗?通常情况并非如此。
如果不进行暴力破解就无法直接恢复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线程,以获取快捷方式实现的源代码和可执行文件。
如果您对运行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/
虽然严格,逻辑,计算机science'ish运算的问题的解释是,要求双方 “我怎么找回我的MySQL用户名” 和 “密码” -我想这可能是有用的人也解决或解释。换一种说法 ...
1)如何检索我的MySQL用户名?
要么
2)密码
后一种情况似乎已经得到了充分解决,因此我不会理会。以下是仅针对“如何获取我的MySQL用户名”案例的解决方案。嗨。
要找到您的mysql用户名,请从mysql shell运行以下命令...
从mysql.user中选择用户;
它将打印所有mysql用户的表。