2017-01-24 366 views
5

我已经尝试了所有已找到的修复程序,并且无法更改我的根MySQL密码。在外壳,如果我在mysql -u root型,我得到MySQL错误:#1045 - 访问被拒绝用户'root'@'localhost'(使用密码:是)

Access denied for user 'root'@'localhost' (using password: NO)

当我去到PHP MyAdmin,我得到这个:

#1045 - Access denied for user 'root'@'localhost' (using password: YES)

这一切开始时我是被迫进入一个新的密码MySQL的。我不知道如何解决这个问题,我很绝望。

谢谢。

+2

你有没有试过** mysql -u root -p **在shell中 –

+1

可能重复[MySQL错误1045(28000):访问拒绝用户'bill'@'localhost'(使用password:YES)]( http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw) – rkosegi

+1

好吧,你的密码是错误的。就那么简单。如何解决它:使用新的,正确的。 –

回答

1
First Run CMD mode 
E:\xampp\mysql\bin>mysql.exe -u root -p 

Screenshot: 

enter image description here

+0

也试过了。我最终安装了一个新版本的XAMPP,并做到了这一点。我失去了我的数据库,但是那样做了。 – SandyS

+0

由于MySQL的风格和版本太多,因此如果您确定所使用的风味和版本,那么在寻求帮助时会很有帮助。如果它不起作用,错误消息有助于获得更多帮助。我已经添加了特定于XAMPP的答案。 –

5

GENERIC MYSQL信息

首先,阅读MySQL手册:https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

的步骤将告诉你如何关闭该服务,并与一个压倒一切的命令来启动它不需要密码,那么你重置密码。从手册:

停止MySQL服务器,然后使用--skip-grant-tables选项重新启动它。这使任何人都可以在没有密码和所有权限的情况下进行连接,并禁用帐户管理语句,如ALTER USERSET PASSWORD。由于这是不安全的,因此您可能希望将--skip-grant-tables--skip-networking一起使用,以防止远程客户端连接。

使用mysql客户端连接到MySQL服务器;

shell> mysql

在mysql客户端,告诉服务器重载授权表,使帐户管理报表工作:

mysql> FLUSH PRIVILEGES;

因为服务器开始 --skip-grant-tables不需要密码

然后更改'root'@'localhost'帐户密码。将密码替换为您要使用的密码。要更改具有不同主机名部分的root帐户的密码,请修改说明以使用该主机名。

的MySQL 5.7.6及更高版本:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

的MySQL 5.7.5及更早版本:

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

用户表

或者直接:

UPDATE mysql.user SET password=PASSWORD('mynewpassword') WHERE user='root';

XAMPP SPECIFIC

停止MySQL服务。打开一个命令窗口。更改为XAMPP MySQL目录:

> cd \xampp\mysql\bin\

没有安全运行服务(注意,您正在运行的mysqld,而不是MySQL的):

> mysqld.exe --skip-grant-tables

MySQL的服务将在此窗口中运行,打开另一个命令窗口并切换到XAMPP MySQL目录:

> cd \xampp\mysql\bin\

运行MySQL客户端:

> mysql

更新密码:

mysql> UPDATE mysql.user SET password=PASSWORD('mynewpassword') WHERE user='root';

退出MySQL的:

mysql> \q

使用任务管理器取消mysqld.exe仍在运行。重新启动mysql服务。

+0

我也试过这个 - 它没有工作。 – SandyS

+0

我试图改变根据您的建议,但不起作用的MySQL密码。当我运行命令来更改密码时,出现此错误:'ERROR 1290(HY000):MySQL服务器正在运行--skip-grant-tables选项,因此它不能执行此语句“ –

+0

如果您收到错误1290,通常是因为你没有做FLUSH PRIVILEGES命令。这将重新激活帐户管理。如果您在使用非标准版本的MySQL时遇到问题(比如MariaDB给出Error 1131),您可以直接更新用户表,而不是使用帐户管理语句:UPDATE mysql.user set password = PASSWORD('mynewpassword')WHERE user ='root';' –

相关问题