错误 1045 (28000):用户“root”@“localhost”访问被拒绝

问题描述 投票:0回答:3

第一次安装MySQL后,命令行客户端打不开,所以我寻找解决方案。

他们说我必须进入 bin 目录并手动运行它。在我运行以下命令并输入密码后。

mysql -uroot -p

但它给出了这个错误:

错误 1045 (28000):用户“root”@“localhost”的访问被拒绝

我尝试了一些关于堆栈溢出的解决方案,包括禁用权限、手动运行我上面提到的、从 service.msc 启动服务、使用密码运行它,如果没有密码就不想工作。

提前感谢任何帮助。

mysql mariadb remote-access remote-server
3个回答
3
投票

通用 MYSQL 信息

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

这些步骤将向您展示如何关闭服务并使用不需要密码的覆盖命令启动它,然后重置密码。从手册:

停止 MySQL 服务器,然后使用

--skip-grant-tables
选项重新启动它。这使得任何人都可以在没有密码的情况下以所有权限进行连接,并禁用帐户管理语句,例如
ALTER USER
SET PASSWORD
。因为这是不安全的,您可能需要将
--skip-grant-tables
--skip-networking
结合使用以防止远程客户端连接。

使用mysql客户端连接MySQL服务器;不需要密码,因为服务器是用

--skip-grant-tables
:

启动的
shell> mysql

在 mysql 客户端中,告诉服务器重新加载授权表,以便帐户管理语句起作用:

mysql> FLUSH PRIVILEGES;

然后更改

'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 特定

停止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
投票

我刚刚遇到了同样的问题,我通过运行“mysql -u root -p -f”修复了它

然后它提示我输入密码。不确定这是否是武力,但这对我有用。


-1
投票

我自己得到了答案。看来,如果您收到此错误,则意味着您需要重置密码。您可以从此链接了解如何在 MySQL 中执行此操作

不要忘记使用命令将 5.7 版本更改为当前安装的版本(我的是 8.0)。 之后,一切对我来说都很顺利。

© www.soinside.com 2019 - 2024. All rights reserved.