为WAMP上的PHPMyAdmin重新获得对丢失的MySQL密码的访问权限

ru9i0ody  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(157)

我在PHPMyAdmin中更改了我的**'root'@'localhost'帐户的密码,并在浏览器上将自己锁定在PHPMyAdmin之外。我使用的是WAMP 2.5。
这个问题的解决方案对我不起作用,因为不幸的是,我丢失了重新分配给
root**的密码。
有些解决方案要求用户通过命令行(including this source)重置密码,我尝试过通过Windows命令行重置密码,但没有成功,因为我现在没有权限:

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

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'

WAMP带有一个MySQL控制台,但我无法使用它,因为它提示我输入密码,正如我所说,不再有。
This video explains how to change passwords,它与上面StackExchange答案中的答案一致,但显然,我现在需要另一种方法来完成此操作,因为我不知道我会像那个家伙警告的那样失去访问权限。
我将感谢任何建议,并道歉,如果这是一个新手类型的事情问。我刚刚掌握使用堆栈进行Web开发的窍门,并通过WAMP配置访问局域网站点是一个相当冒险的过程,所以如果可能的话,我更喜欢不需要重新安装所有东西的东西。

Edit 1:继续尝试@RiggsFolly的解决方案。虽然我可以访问my.ini文件,进行更改没有问题,并通过WAMP或其他方式重新启动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 */
oknwwptz

oknwwptz1#

这里有一个方法,将允许您重置MYSQL 'root'密码很简单.
停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service

编辑my.ini文件

wampmanager -> MySQL -> my.ini

在ini文件中找到[wampmysqld](32位)或[wampmysqld64](64位)部分
直接在该节标题后添加此行

skip-grant-tables

重新启动mysql服务。

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

打开MySQL控制台

wampmanager -> MySQL -> MySQL Console

现在,我们将重置root用户的密码,当然,这也可用于重置任何用户的密码。
mysql>命令提示符下输入以下2个命令,每个命令的行尾都有一个分号,并在每行之后按Enter键,以向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';
FLUSH PRIVILEGES;
  • 请注意,更新可能会报告更新了多行,这是因为可能有多个用户帐户的用户ID为“root”,每个帐户都有不同的域,即127.0.0.1、localhost和::1*

现在,在mysql命令提示符处输入“quit”以存在mysql。
停止mysql服务

wampmanager -> MySQL -> Service -> Stop Service

编辑my.ini文件

wampmanager -> MySQL -> my.ini

在ini文件中找到[wampmysqld](32位)或[wampmysqld64](64位)部分
删除前面添加的skip-grant-tables参数。

请勿在ini文件中保留此参数,这是一个巨大的安全漏洞。

重新启动mysql服务。

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

现在,如果需要,您可以设置root用户帐户,使其不会使密码自动过期

wampmanager -> MySQL -> MySQL Console

然后运行以下查询

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

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

ac1kyiln

ac1kyiln2#

之前的答案对我不起作用,因为MySQL控制台在按下intro后会阻止我。
创建一个包含以下内容的文件 *C:\wamp 64\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服务。

相关问题