我在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的解决方案。虽然我可以访问my.ini文件,进行更改,没有问题,并且可以通过WAMP或其他方式毫无问题地重新启动MySQL,但该行skip- grant-tables没有生效,给我留下了密码提示或无权执行任何操作。(我在这里写了一个新问题来解决这个问题,因为我觉得这是一个不同的问题。)
my.ini
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
编辑my.ini文件
wampmanager -> MySQL -> my.ini
在ini文件中找到[wampmysqld](32位)或[wampmysqld64](64位)部分
[wampmysqld]
[wampmysqld64]
在该部分标题之后直接添加此行
skip-grant-tables
重新启动mysql服务。
wampmanager -> MySQL -> Service -> Start/Resume Service
打开MySQL控制台
wampmanager -> MySQL -> MySQL Console
现在,我们将重置root用户的密码,当然,这可以用于重置任何用户的密码。
在mysql>命令提示符下输入以下2条命令,每条命令在行尾加半冒号,并在每行后按ENTER,以将命令发布给mysql。
mysql>
MYSQL 5.7之前的版本
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
发布MYSQL 5.7版后,列名已更改
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'; ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES;
请注意,该更新可能会报告它已更新了多行,因为该更新可能存在多个用户帐户,这些用户帐户的“ root”用户ID分别具有不同的域,即127.0.0.1,localhost和:: 1
现在,在mysql命令promt处输入“ quit”以存在mysql。
删除skip-grant-tables我们之前添加的参数。
不要将此参数留在ini文件中,这是一个巨大的安全漏洞。
现在,您应该能够使用用户ID“ root”和您刚刚为该用户设置的新密码,使用phpmyadmin登录。