MySQL重置密码终极版
MySQL重置密码终极版
尝试全网很多方法,很鸡肋,基本无法重置 MySQL57 的密码,下面是切实有效的方法:
出现 MySQL 错误 “ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’” 通常意味着你尝试以 root
用户身份连接到 MySQL 服务器,但提供的密码不正确,或者该用户的访问权限被限制了。以下是一些解决步骤:
1. 重置 MySQL root 密码
在 Windows 上:
-
停止 MySQL 服务。以管理员身份运行
cmd
,可以在命令行中运行:
net stop mysql
或者如果你使用的是 MySQL 的服务名(例如
MySQL57
):net stop MySQL57
不知道服务名,可通过服务查找,
Win + R
打开运行,输入services.msc
,找到M
开头服务名
这里查出本机的服务名为MySQL57
-
以无密码模式启动 MySQL:
先配置好配置文件
实际路径在C盘
或D盘
的ProgramData
路径下,文件名叫:my.ini
打开my.ini
,大致第78行左右配置免密登录
再以管理员身份打开cmd
mysqld --skip-grant-tables
-
打开一个新的命令行窗口,并连接到 MySQL:
注意一定要新开一个
cmd
命令窗口,且上面执行的mysqld --skip-grant-tables
的cmd
命令窗口不能关闭!!!mysql -u root
-
选择
mysql
数据库:USE mysql;
-
重置密码(将
new_password
替换为你想设置的新密码):FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
-
退出并重新启动 MySQL 服务。
-
使用新密码尝试连接:
mysql -u root -p
然后输入你的新密码。执行如下显示
Welcome to the MySQL monitor……
,恭喜,密码重置成功!
2. 检查用户权限
如果你只是想确认用户权限而不是重置密码,可以尝试查看 root
用户的权限:
SELECT user, host FROM mysql.user WHERE user='root';
确保 host
列中包含 localhost
或 %
(后者允许从任何主机连接)。
3. 使用正确的用户和主机名
如果你从远程机器连接,确保使用正确的用户和主机名。例如,如果你从远程机器连接,尝试:
mysql -u root -p -h your_server_ip_or_hostname
并确保 root
用户有从该主机连接的权限。
4. 检查防火墙和安全组设置
确保没有防火墙或安全组规则阻止你的连接。检查你的网络设置,确保 MySQL 的默认端口(3306)是开放的。
通过以上步骤,你应该能够解决访问被拒绝的问题。如果问题仍然存在,请检查 MySQL 的错误日志文件以获取更多详细信息。在 Windows 上,错误日志通常位于 MySQL 数据目录中,例如 C:\ProgramData\MySQL\MySQL Server 5.7\data\
。
5. 注册及卸载MySQL57服务
a.注册 MySQL 为服务
如果想注册 MySQL 为服务(以便系统自动管理):
mysqld --install MySQL57
然后通过:
net start MySQL57
来启动服务。
过程如图:
b.卸载服务(可选)
如果想卸载 MySQL57
服务:
先通过:
net stop MySQL57
来停止服务。
再执行
sc delete MySQL57
来卸载服务。
过程如图: