无法连接到位于127.0.0.1:3306的mysql,因为使用密码的用户'root'@'localhost'被拒绝访问。

77
我一直在尝试在工作台上创建新的数据库连接。然而,每次测试连接时都会出现错误消息,内容如下:

无法连接到 127.0.0.1:3306 上的 mysql 数据库,访问被拒绝(using password:YES),'root'@'localhost'用户被拒绝访问。
我不知道这个错误的原因。我已经尝试卸载并重新安装了工作台6.1和mysql服务器5.6,但错误仍未解决。

什么是tenlet?@ydoow - cpl
请尝试访问 https://dev59.com/xGQn5IYBdhLWcg3wzZz6#51444744。 - Huseyin
44个回答

47

首先检查是否存在工作台或连接问题。

1)在Windows中运行“cmd”以打开终端

尝试两种方法

2a)mysql -u root -p -h 127.0.0.1 -P 3306

2b)mysql -u root -p -h > localhost -P 3306

3)如果连接良好,则会收到密码提示,请确保使用正确的密码连接。

如果连接被拒绝,请授予权限。

mysql >GRANT ALL ON [DatabaseName].* TO 'root'@'127.0.0.1' IDENTIFIED BY '[PASSWORD]';
如果您在这里的连接被接受,那么它就像一个工作台配置问题。


2
我还没有任何数据库连接。即使我尝试使用localhost作为我的主机名,它仍然无法工作。@ydoow - cpl
16
在输入 mysql -u root -p -h 127.0.0.1 -P 3306 后,出现了“mysql”不被识别为内部或外部命令、可操作的程序或批处理文件的提示信息。 - cpl
3
请在MySQL二进制文件目录下运行该命令。通常,该目录类似于C:\Program Files\MySQL\MySQL Server x.x。 - ydoow
4
"数据库名称"是什么?我刚刚安装了它。 - Arun Raaj
3
在输入密码后,我得到了以下错误信息:ERROR 2005 (HY000): Unknown MySQL server host '-P' (11001) - Asef Hossini
显示剩余7条评论

27

我也遇到了同样的问题。
我在Ubuntu上安装了新的mysql,但是没有设置mysql密码,结果无法以任何方式连接到mysql。
最近我发现有一个用户表,其中包含名称、主机、密码和一些插件。因此,在安装时为我的用户root@localhost分配了一个名为auth_socket的插件,它允许Unix用户“root”以mysql用户“root”的身份登录,而无需密码,但不允许作为其他Unix用户登录。因此,要解决这个问题,您应该关闭此插件并设置常规身份验证:

  1. 打开Linux终端
  2. 输入"sudo mysql"
    你会看到"mysql >", 这意味着您已经作为'root' Unix用户连接到mysql,并且可以输入SQL查询。
  3. 输入SQL查询以更改登录方式:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
    其中'mysql_native_password'表示关闭auth_socket插件。

一个检查是否出现问题的好方法是运行 sudo mysql,如果可以进入,则表示启用了 auth_socket 插件,可能会导致问题。顺便说一句,非常好的答案,谢谢。 - Nathan F.
当使用 sudo mysql 时,我遇到了这个问题:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: The specified module could not be found. Library path is 'caching_sha2_password.dll' - Asef Hossini

19

试试这个,它对我有效!

sudo mysql -u root -p

在终端中输入:

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

然后在MySQL Workbench中编辑连接,并将根名称更改为admin。


1
这个要输入到哪里?工作台内有终端吗? - wolfblitza
错误1410(42000):您不被允许使用GRANT创建用户。 - Raul Chiarella
在终端中使用 sudo mysql -u root -p 时,什么也没有发生。这是正确的吗?没有输出,也没有错误。 - Asef Hossini
MySQL正在Docker上运行。我尝试了这些步骤,但它没有起作用。请建议任何解决方案。 - Prashant Singh
在花费了数小时甚至数十小时尝试各种方法让工作台与root兼容后,仍然无法解决问题。最终我尝试了这个方法,结果一下子就成功了。现在我可以使用新的管理员用户登录工作台,整个过程只花了大约30秒钟。 - dlofrodloh

16

我在Windows上遇到了同样的问题。

  1. 进入任务管理器中的服务
  2. 启动名为MySQL80的服务
  3. 重新启动工作台

它如果已经在运行怎么办? - Asef Hossini

14
在运行MySQL 5.7及更高版本的Ubuntu系统中,默认情况下,root MySQL用户使用auth_socket插件进行身份验证,而不是密码。这在许多情况下可以提供更高的安全性和可用性,但当您需要允许外部程序(例如phpMyAdmin)访问用户时,也可能会使事情变得复杂。 如果您希望在连接到MySQL时使用密码作为root,请将其身份验证方法从auth_socket切换为mysql_native_password。 来源 从终端打开MySQL提示符:
$ sudo mysql

接下来,使用以下命令检查每个MySQL用户帐户使用的认证方法:

mysql > SELECT user,authentication_string,plugin,host FROM mysql.user;

您会发现,root用户实际上使用auth_socket插件进行身份验证。要配置root帐户使用密码进行身份验证,请运行以下ALTER USER命令。请确保将密码更改为您选择的强密码:

mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行FLUSH PRIVILEGES,它会告诉服务器重新加载授权表并使您的新更改生效:
mysql > FLUSH PRIVILEGES;

请再次检查每个用户使用的认证方法,以确认root不再使用auth_socket插件进行认证:

mysql > SELECT user,authentication_string,plugin,host FROM mysql.user;

您将在输出中看到,root MySQL用户现在使用密码进行身份验证。


我可能有些笨,但我已经四处查找来解决这个问题,而解决方案的第一部分只是要以root身份执行#mysql命令(或者sudo也应该能够运行)。之后我就可以添加一个非root用户(在Ubuntu上,我不知道root密码)。 - CarlH
正是 问题所在,有一套简单易行的步骤来解决这个问题。赞赏!!! - undefined

6

我刚刚遇到了这个问题,经过多次尝试,我发现访问服务 >> 选择 MySQLxx 服务,然后右键单击并点击启动,这解决了我的问题,一切都正常工作,而不需要丢失数据。


5
您需要在本地安装托管的mysql服务器,然后安装workbench。如果仍然出现错误,请进行以下操作:
(在MAC中:)
系统偏好设置> Mysql(将显示在底部,否则服务器未安装在您的计算机上)。
检查服务器状态并启动Mysql服务器。
尝试使用默认端口号连接到localhost。

解决了我的问题。我试图连接,但 MySQL 没有启动,哈哈。 - Brian

5

只需返回您的安装程序并添加SQL服务器,如果已经存在,请重新配置它并从那里添加密码。

返回您的工作台,删除当前用户并使用服务器配置过程中使用的相同密码创建新用户。


1
这应该是在Windows上检查的第一件事!解决了我的问题,谢谢! - Andy Res
谢谢,我也遇到了同样的问题,这个方法非常有效! - pctopgs
这可能会有用,当重新配置服务器时,知道如何浏览向导:https://ladvien.com/data-analytics-mysql-localhost-setup/(我与该链接没有任何关联,只是找到了它) - Julissa DC
谢谢您的提醒!我很愚蠢地只安装了MySQL Workbench(而不是MySQL Installer Community),所以我没有服务器可以启动。 - haptn

4

在查看了许多解决方案后,这是适合我的总结。 我一开始只安装了工作台6.2版本,在连接到本地主机时失败。

步骤1:检查是否安装了MySQL服务器。如果没有,请下载并安装。

步骤2:MySQL服务器配置建议使用强密码,但请忽略它,选择传统密码。

步骤3:启动MySQL服务器(Windows系统:服务-> MySQL-> 启动)。

步骤4:打开工作台并创建本地连接。


4

MySQL安装程序(社区版)-> MySQL服务器重新配置 -> 下一步 -> 下一步 -> 连接名称[本地实例或其他任何名称] -> 点击密码- 存储在保险库中...并添加密码,然后 -> 测试连接。 对我有效:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接