重新获得 WAMP 上 PHPMyAdmin 丢失的 MySQL 密码
Regaining access to lost MySQL password for PHPMyAdmin on WAMP
我在 PHPMyAdmin 中更改了 'root'@'localhost' 帐户的密码并点赞 (this person asking here) 并将自己锁定在 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 配置对 LAN 站点的访问是一次冒险,所以如果可能的话,我更喜欢不需要重新安装所有东西的东西。
编辑 1:继续尝试@RiggsFolly 的解决方案。虽然我可以访问 my.ini
文件,毫无问题地进行更改,并通过 WAMP 或其他方式毫无问题地重新启动 MySQL,但行 skip-grant-tables
没有生效,给我留下密码提示或无权做任何事情。 (我在这里写了一个新问题来解决这个问题,因为我觉得这是一个不同的问题。)
编辑 2:我在评论中尝试了@t.niese提供的link中的说明,当我将控制台设置为[=49时=] 对说明的反馈,它报告了这一点,但未能更改任何内容:
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位)部分
直接在该节标题之后添加此行
skip-grant-tables
重新启动 mysql 服务。
wampmanager -> MySQL -> Service -> Start/Resume Service
打开 MySQL 控制台
wampmanager -> MySQL -> MySQL Console
现在我们要为root用户重设密码,当然这可以用来重设任何用户的密码。
在mysql>
命令提示符下输入以下2条命令,每条命令在一行末尾有一个分号,每行后按回车键向mysql发出命令。
前 MYSQL 版本 5.7
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Post MYSQL version 5.7 列名称更改
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
请注意,更新可能会报告它更新了不止一行,因为可能有多个用户帐户的用户 ID 为 'root',每个帐户都有不同的域,即127.0.0.1,本地主机和 ::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。
以前的答案对我不起作用,因为 MySQL 控制台在按介绍后将我拒之门外。试试这个:
创建文件 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服务。
我在 PHPMyAdmin 中更改了 'root'@'localhost' 帐户的密码并点赞 (this person asking here) 并将自己锁定在 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 配置对 LAN 站点的访问是一次冒险,所以如果可能的话,我更喜欢不需要重新安装所有东西的东西。
编辑 1:继续尝试@RiggsFolly 的解决方案。虽然我可以访问 my.ini
文件,毫无问题地进行更改,并通过 WAMP 或其他方式毫无问题地重新启动 MySQL,但行 skip-grant-tables
没有生效,给我留下密码提示或无权做任何事情。 (我在这里写了一个新问题来解决这个问题,因为我觉得这是一个不同的问题。)
编辑 2:我在评论中尝试了@t.niese提供的link中的说明,当我将控制台设置为[=49时=] 对说明的反馈,它报告了这一点,但未能更改任何内容:
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位)部分
直接在该节标题之后添加此行
skip-grant-tables
重新启动 mysql 服务。
wampmanager -> MySQL -> Service -> Start/Resume Service
打开 MySQL 控制台
wampmanager -> MySQL -> MySQL Console
现在我们要为root用户重设密码,当然这可以用来重设任何用户的密码。
在mysql>
命令提示符下输入以下2条命令,每条命令在一行末尾有一个分号,每行后按回车键向mysql发出命令。
前 MYSQL 版本 5.7
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Post MYSQL version 5.7 列名称更改
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
请注意,更新可能会报告它更新了不止一行,因为可能有多个用户帐户的用户 ID 为 'root',每个帐户都有不同的域,即127.0.0.1,本地主机和 ::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。
以前的答案对我不起作用,因为 MySQL 控制台在按介绍后将我拒之门外。试试这个:
创建文件 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服务。