在WAMP上恢复对丢失的PHPMyAdmin MySQL密码的访问

在WAMP上恢复对丢失的PHPMyAdmin MySQL密码的访问,mysql,phpmyadmin,wamp,Mysql,Phpmyadmin,Wamp,我在PHPMyAdmin和类似()中更改了我的'root'@'localhost'帐户的密码,并将自己锁定在浏览器的PHPMyAdmin之外。我正在使用WAMP 2.5 关于这个问题提供的解决方案对我不起作用,因为不幸的是,我丢失了重新分配给root的密码 有些解决方案要求用户通过命令行()重置密码,我曾尝试通过Windows命令行重置密码,但没有成功,因为我现在没有权限: mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('myn

我在PHPMyAdmin和类似()中更改了我的'root'@'localhost'帐户的密码,并将自己锁定在浏览器的PHPMyAdmin之外。我正在使用WAMP 2.5

关于这个问题提供的解决方案对我不起作用,因为不幸的是,我丢失了重新分配给root的密码

有些解决方案要求用户通过命令行()重置密码,我曾尝试通过Windows命令行重置密码,但没有成功,因为我现在没有权限:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mynewpassword');

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
WAMP附带了一个MySQL控制台,但我无法使用它,因为它会提示我输入一个密码,正如我所说的,这个密码已经没有了

,它与上面StackExchange答案中的答案一致,但显然,我现在需要另一种方法来实现这一点,因为我不知道我会像那个家伙警告的那样失去访问权限

如果这是一个新手类型的问题,我将感谢任何建议和道歉。我刚刚掌握了使用堆栈进行web开发的诀窍,通过WAMP配置对LAN站点的访问是一次相当大的冒险,因此如果可能的话,我更喜欢不需要重新安装所有内容的东西

编辑1:继续尝试@RiggsFolly的解决方案。虽然我可以通过WAMP或其他方式访问
my.ini
文件,无问题地进行更改,无问题地重新启动MySQL,但是
skip grant tables
这一行没有生效,给我留下了密码提示,或者没有权限执行任何操作。(我在这里写了一个新问题来解决这个问题,因为我觉得这是一个不同的问题。)

编辑2:我尝试了@t.niese在评论中提供的链接中的说明,当我将控制台设置为返回有关说明的反馈时,它报告了这一情况,但没有更改任何内容:

C:\wamp\bin\mysql\mysql5.6.17\bin>mysqld --skip-grant-tables --console
[Note] Plugin 'FEDERATED' is disabled.
[Note] InnoDB: Using atomics to ref count buffer pool pages
[Note] InnoDB: The InnoDB memory heap is disabled
[Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
[Note] InnoDB: Compressed tables use zlib 1.2.3
[Note] InnoDB: Not using CPU crc32 instructions
[Note] InnoDB: Initializing buffer pool, size = 128.0M
[Note] InnoDB: Completed initialization of buffer pool
[ERROR] InnoDB: .\ibdatai can't be opened in read-write mode
[ERROR] InnoDB: The system tablespace must be writabe!
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting
[Note] /* List of plugins shutting down */

这里有一个方法,可以让您非常简单地重置MYSQL“root”密码

停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service
wampmanager -> MySQL -> Service -> Stop Service
编辑my.ini文件

wampmanager -> MySQL -> my.ini
wampmanager -> MySQL -> my.ini
在ini文件中找到
[wampmysqld]
(32位)或
[wampmysqld64]
(64位)部分

将此行直接添加到该节标题之后

skip-grant-tables
重新启动mysql服务

wampmanager -> MySQL -> Service -> Start/Resume Service
wampmanager -> MySQL -> Service -> Start/Resume Service
打开MySQL控制台

wampmanager -> MySQL -> MySQL Console
现在我们将重置根用户的密码,当然这可以用来重置任何用户的密码

mysql>
命令提示符下输入以下两个命令,每行末尾都有一个分号,然后在每行后面按Enter键向mysql发出命令

MYSQL 5.7版之前的版本

发布MYSQL 5.7版后,列名已更改

请注意,更新可能会报告它已更新了多行,这是因为可能有多个用户名为“root”的用户帐户,每个帐户具有不同的域,即127.0.0.1、localhost和::1

现在在mysql命令promt中输入'quit'以存在mysql

停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service
wampmanager -> MySQL -> Service -> Stop Service
编辑my.ini文件

wampmanager -> MySQL -> my.ini
wampmanager -> MySQL -> my.ini
在ini文件中找到
[wampmysqld]
(32位)或
[wampmysqld64]
(64位)部分

删除前面添加的
跳过授权表
参数

不要将此参数保留在ini文件中,因为它是一个严重的安全漏洞。

重新启动mysql服务

wampmanager -> MySQL -> Service -> Start/Resume Service
wampmanager -> MySQL -> Service -> Start/Resume Service

现在,您应该可以使用用户ID“root”和刚刚为该用户设置的新密码使用phpmyadmin登录。

以前的答案对我不起作用,因为MySQL控制台在按intro后将我拒之门外。试试这个:

创建一个包含以下内容的文件C:\wamp64\mysql-init.txt:

UPDATE mysql.user SET Password=PASSWORD('1234') WHERE User='root';
FLUSH PRIVILEGES;
这会将root用户的密码重置为1234。然后,在Windows命令行上运行下一个命令:

C:\wamp64\bin\mysql\mysql5.7.21\bin\mysqld.exe wampmysqld --init-file=C:\\wamp64\\mysql-init.txt
根据WAMP在文件系统上的安装位置更改路径


最后,重新启动WAMP服务。

那么您已经完成了将凭证存储在文本文件中,然后通过mysqld调用凭证的技巧?您是否遵循了此说明?您好@草莓,我承认我不知道您提到的技巧。@t.niese,我将在尝试所有建议时报告并编辑问题详细信息。谢谢。@草莓,我确实试过了,但我没有被授予访问权限。WAMPServer 2.5 64位中有一个小错误。也许这是你的问题。如果安装了WAMPServer 2.5 64位,请检查my.ini是否具有节头
[wampmysqld64]
,而不是“[wampmysqld]”,一旦更正,MySQL将响应该节中的更改。这解决了我的问题。唯一的更改是mysql中的列名。用户表是身份验证字符串,而不是密码。否则它就像一个符咒!thanks@RiggsFolly您更改了表名而不是列名,不是吗?奇怪,在我的情况下,当我离开mysql.user并更改password=。。。到身份验证\u字符串=。。。SQL更新语法是更新表\u名称集列,。。。哪里我试过这个,但对我不起作用。我进入了一行
ALTER USER'root'@'localhost'密码永不过期当它说在设置跳过授权表的情况下不能这样做时。所以我更改了skip-grant-tables设置,将rego返回到MySQL控制台并尝试结束,但它告诉我需要设置密码。