无法连接到数据库服务器(MySQL Workbench)

131

你能帮我解决这个问题吗?

当我在Mysql Workbench的数据库菜单下尝试点击“查询数据库”时,它会给我一个错误:

无法连接到数据库服务器

您从本地主机向服务器127.0.0.1:3306尝试连接失败:无法连接到mysql服务器'127.0.0.1'(10061)

请检查:

  1. mysql是否在127.0.0.1上运行
  2. mysql是否运行在3306端口(注意:3306是默认值,但这可以更改)
  3. root用户是否有权从您的地址连接到127.0.0.1(mysql权限定义了哪些客户端可以连接到服务器以及来自哪些计算机)
  4. 确保在需要密码的情况下同时提供密码,并使用来自您连接的主机地址的正确密码连接到127.0.0.1

相关的内容:http://dba.stackexchange.com/questions/44485/i-cant-get-mysql56-service-to-start-after-i-stopped-it - Adriano
3
这个答案对我有用。 https://dev59.com/H3HYa4cB1Zd3GeqPIzUL - mcaleaa
在我的情况下,简单的重启有所帮助 - 但我首先检查了@sergio的建议 - https://dev59.com/qmsz5IYBdhLWcg3wfn0x#7875732。 - dannydedog
在Windows上,请确保您以本地系统身份登录,而不是作为网络服务。完整说明请参见:https://dev59.com/qmsz5IYBdhLWcg3wfn0x#73968917 - iamgr007
27个回答

140

问题可能是由于在升级到Ubuntu 16.04时,为root用户默认启用了套接字身份验证,但未设置密码。

解决方案是恢复本机密码身份验证。您可以通过使用套接字身份验证登录MySQL来执行此操作:

sudo mysql -u root

登录后:

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

这将恢复到本地(旧默认)密码验证。

现在在MySQL需要密码时,请使用password作为密码。


3
它对我有用,我很惊讶。我在安装mysql时已经配置了严格的密码,与所提供的更改查询一起使用了相同的严格密码。我很好奇为什么第一次尝试时它没有起作用。 - Vipul Patil
1
非常感谢!这种行为是否只是为了使Unix root用户在登录MySQL时无需输入密码而创建的? - Igor de Lorenzi
1
非常好的解决方案。谢谢兄弟! - Valney Faria
1
如何在Windows上进行此操作?设置密码后,我遇到了同样的问题。奇怪的是,在设置密码后,MySQL会出错,就好像他们不想让任何人使用他们的数据库框架一样。 - Franco
3
如果您正在使用snap安装mysql workbench,请尝试运行以下命令: sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service,以允许沙箱包访问密码服务。此链接包含更多信息:https://askubuntu.com/a/1242777/1621549 - Rohim Chou
我在 MariaDB 10.1.48 上尝试使用此命令,但出现了错误 "您的 SQL 语法有误;" :/ - Raul Chiarella

65

尝试从开始菜单搜索框中打开services.msc,并尝试手动启动MySQL服务,或直接在运行框中写入services.msc


1
对我没有用。直接从命令行运行'C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe --console'(注意"mysql"和".exe"之间的"d"确实有用,但只有在以管理员身份打开命令行时)。因此,我认为找到一种以管理员身份启动服务的方法就可以解决这个问题了。 - Adriano
7
开始菜单的搜索框在哪里? - Everyone_Else
我的解决方案是使用sudo运行Mysql-Workbench:sudo mysql-workbench。不知道在哪里找到services.msc。 - Luigi Lopez

39

看起来这个错误有很多可能的原因。

我的原因/解决方案

在我的情况下,原因是我的服务器只配置为接受来自本地主机的连接。我按照这篇文章进行了修复:如何启用MySQL数据库服务器的远程访问?。我的my.cnf文件没有skip-networking行,所以我只是更改了该行。

bind-address = 127.0.0.1

bind-address = 0.0.0.0

这允许来自任何IP的连接,而不仅限于127.0.0.1。

然后,我通过运行以下终端命令创建了一个可以从我的客户机连接的MySql用户:

# mysql -u root -p
mysql> CREATE USER 'username'@'1.2.3.4' IDENTIFIED BY 'password';
    -> GRANT ALL PRIVILEGES ON *.* TO 'username'@'1.2.3.4' WITH GRANT OPTION;
    -> \q

如果您遇到连接问题,可以使用'%'代替'1.2.3.4',允许用户从任何IP地址连接。其中1.2.3.4是您要连接的客户端的IP地址。

其他原因

有一个相当广泛的列表,详见Access-Denied错误原因


据我所知,创建用户是必要的,因为用户root应该只用于管理工作,并且合理地应该限制在本地主机上。你创建的其他用户取决于你! - user3791372
现在访问被拒绝错误的原因链接已经失效。 - Matt Coubrough
1
我曾经遇到过类似的问题,对我有用的是: mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'Password123#@!'; -> GRANT ALL PRIVILEGES ON . TO 'username'@'%' WITH GRANT OPTION; -> \q 我不需要进行绑定操作, 我的密码设置为中等强度,您可以使用“SHOW VARIABLES LIKE'validate_password%';”进行检查。 注意:这是我的开发Ubuntu设置。 - souradeep majumdar

22

你尝试确定这是Workbench的问题还是一般的连接问题了吗?试试这个:

  1. 打开终端
  2. 键入 mysql -u root -p -h 127.0.0.1 -P 3306
  3. 如果成功连接,输入密码后将显示mysql提示符(在那里键入 quit 并按 Enter 键退出)。

回报一下这个方法是否有效。


嗨,它说“mysql未被识别为内部或外部命令、可操作的程序或批处理文件。”非常感谢。 - user948950
1
你可能想要将 mysql bin 目录(即 MySQL 主目录下的 bin 目录)添加到系统路径中。这样,mysql 客户端程序就可以从任何地方使用了。或者你也可以在进入 MySQL bin 目录后直接运行该命令。两种方法都可以。 - Sergio
2
当我使用这个命令连接mysql $> mysql -u root -p -h 127.0.0.1 -P 3306 输入密码: ERROR 1045 (28000): 用户'root'@'localhost'被拒绝访问(使用的密码:无) [root@localhost ~]# mysql -u root -p -h 127.0.0.1 -P 3306 输入密码: ERROR 1045 (28000): 用户'root'@'localhost'被拒绝访问(使用的密码:是) [root@localhost ~]#mysql -u admin -p -h 127.0.0.1 -P 3306 输入密码: ERROR 1045 (28000): 用户'admin'@'localhost'被拒绝访问(使用的密码:是) [root@localhost ~]# - Sumit Munot
对我有用!非常感谢! - igor

20

我曾在 Mac OS 上遇到了类似的问题,我通过以下方式解决:

从终端运行:

mysql -u root -p -h 127.0.0.1 -P 3306

然后,我被要求输入密码。由于没有设置密码,我只需按下enter

我收到了以下消息:

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 181. Server version: 8.0.11 Homebrew.

如果您成功登录mysql>,请运行以下命令:

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

您应该会收到这样的消息:

查询 OK,受影响的行数为 0(0.19 秒)

现在,您的密码是"password",用户名是"root"。

祝编码愉快 :)


1
这可能不再适用于新的安装,因为匿名登录已被禁用。 - en_lorithai

13

7
这个错误是因为你的电脑上mysql服务器没有启动。你需要手动启动它,按照以下步骤操作:
  1. 根据你的位数版本(32位或64位),在你的电脑上下载并安装wamp服务器(http://wampserver-64bit.en.softonic.com/),这个链接可以让你下载64位的wamp服务器。

  2. 安装完后,你可以双击运行它。(你可以在任务栏右侧看到一个图标,如果被隐藏了,你可以点击显示隐藏的应用程序)。然后点击图标,进入Mysql

  3. 然后进入Service,你会发现Start/Resume Services,点击它。

  4. 现在就完成了。打开mysql workbench,看看是否能正常工作。


6

我必须以管理员身份启动Workbench。显然它没有连接到我的本地数据库服务器进程所需的权限。

右键单击Workbench快捷方式,选择以管理员身份运行。在快捷方式的属性窗口中,您可以点击“高级”并勾选旁边的“以管理员身份运行”框,始终使用管理员特权运行Workbench。


6

我在Ubuntu上使用Workbench时遇到了同样的问题,问题出在权限上。

  1. 找到Workbench应用程序
  2. 点击“权限”按钮
  3. 为该应用程序授予所有权限

输入图像描述


完美!如果服务器运行并且您只收到错误消息,则可能是问题所在。 - Abdifatah Mohamed

5

我在打开MySQL Workbench时遇到类似的错误。解决方法如下:

  1. Windows机器上点击开始按钮
  2. 键入services并按下Enter
  3. 找到MySQL并单击它
  4. 在左侧面板的顶部,您会发现一个选项启动服务
  5. 单击可见的超链接启动

抱歉,这是一个翻译任务,需要您提供英文原文。 - Peter Mortensen

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