无法将MySQL Workbench连接到MySQL服务器

我已经从Snap Store安装了MySQL Workbench和使用apt安装了MySQL server 8.0。服务器运行正常,我可以从终端访问MySQL shell。但是我连接Workbench到服务器时遇到了问题。我得到了:

无法连接到数据库服务器

您尝试使用用户'root'连接到位于localhost:3306的MySQL服务器时失败了:

一个AppArmor策略阻止了此发送者将此消息发送给此接收者;type="method_call",sender=":1.125" (uid=1000 pid=7944 comm="/snap/mysql-workbench-community/5/usr/bin/mysql- wo" label="snap.mysql-workbench-community.mysql-workbench- community (enforce)") interface="org.freedesktop.Secret.Service" member="OpenSession” error name="(unset)" requested_reply="0" destination=":1.13" (uid=1000 pid=2044 comm="/usr/bin/gnome- keyring-daemon --daemonize --login" label="unconfined")

请执行以下操作:

1 检查MySQL是否在localhost上运行

2 检查MySQL是否可通过端口3306访问(注意:3306是默认端口,但可以更改)

3 检查用户root是否有权从您的地址连接到localhost(MySQL权限定义了哪些客户端可以连接到服务器以及从哪些机器连接)

4 确保您提供了必要的密码,并且使用了正确的密码来连接localhost,连接的主机地址也是正确的

没有输入密码的字段。它显示两个选项存储在钥匙串中清除。选择存储在钥匙串中后,会提示输入密码,然后我输入密码。但是接着显示一个错误信息:

无法存储密码:一个AppArmor策略阻止了此发送者...


几乎可以确定你遇到了可怕的 MySql 密码连接问题。请参考此页面上的第三步骤。尝试一下吧。https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 - walttheboss
1FYI:MySQL Workbench的Snap软件包并非由MySQL官方维护,而deb软件包则是。 - Kulfy
我正在使用Ubuntu 20.10(我喜欢使用最新版本,但由于显卡驱动问题,我经常不能立即切换),所以现在无法使用官方支持的deb文件。目前他们只正式支持20.04和21.04版本。因此,今天我尝试了snap,并遇到了这个问题。 - Matt Welke
3个回答

你已经将MySQLWorkbench安装为Snap软件包。你想要将数据库密码存储在Gnome密码和密钥工具中。
然而,Snap软件包是沙盒化的;默认情况下不允许访问该服务。当你选择“存储在钥匙串中”时,MySQLWorkbench被AppArmor阻止。
你需要输入一个命令来允许该软件包访问该服务。命令如下:
sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service

我从这个网站的讨论中得到了这个。

4这在我的Ubuntu 20.10上有效。 - bhattraideb
这对我没用,我不得不以root身份进入mysql并使用以下命令:<< ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 然后它才能正常工作。需要指出的是,我的用户已经激活了<<auth_plugin>>,意味着我只需输入mysql即可进入mysql,现在我需要输入mysql -p并输入我的密码。 - user836049
但后来工作了。 - user836049
我收到错误信息 error: snap "snapd" 没有名为 "password-manager" 的插槽 - Mathew Alden
Tiago的解决方案对我起了作用。 - Mathew Alden
这对我有用;尽管我还必须在软件中心更改权限,以允许我访问证书。 - HardlyNoticeable
这个效果非常好...谢谢 - Wizard Sultan
这让我成功解决了存储密码的错误,我能够开始连接。但是大约30秒后,我又遇到了一个错误,提示Your connection attempt failed for user 'admin' to the MySQL server at <aws_host>:3306: Unable to connect to localhost。奇怪的是,尽管我输入了我的AWS RDS数据库主机作为要连接的主机,它仍然试图连接到本地主机。 - Matt Welke
我成功连接了。原来是因为我忘记将我的IP地址加入白名单。:P 我的错。所以对我来说,只需运行这个答案中的snap命令就足够让我能够使用Ubuntu 20.10进行连接了。 - Matt Welke
它对我有用,谢谢兄弟。 - Praveen Chelumalla
我需要只做一次还是每次都要做? - Payel Senapati
一次足够了。 - Jos
在Ubuntu 20.04上对我有效。 - Mohit Malviya
解决了我在Ubuntu 20.04上的问题 - 谢谢! - Loz
非常感谢。这个命令运行得很好,解决了问题! - Farooq Khan
3这在Ubuntu 22.04上对我有效。谢谢。 - Tinashe Chinyanga
非常感谢,这对我很有效。 - Laban
1@Jos非常感谢你,我早上在Ubuntu 22.04和Linux Mint 21上都苦苦挣扎了一整天,直到看到了你的回复。谢谢你啊,真是太感激了。 - Matija

  1. 打开 Ubuntu Software
  2. 搜索 mysql-workbench 并点击 Mysql Workbench Community
  3. 点击 Permissions
  4. 启用 读取、添加、更改或删除保存的密码ssh-keys(如果您还使用 ssh 密钥)。

我认为这个解决方案是最简单的。谢谢! - Marcelo Pereira Rodrigues

为了使其正常工作,我尝试了一种不同的方法,并转到MySQL社区下载
在那里,选择了操作系统Ubuntu Linux,版本20.04(x86,64位),然后点击下载按钮。然后,选择"不,谢谢,直接开始下载"并保存文件。这是一个.deb文件,保存在下载文件夹中,因此要安装它,
cd ~/Downloads
sudo apt-get install ./mysql-workbench-community_8.0.20-1ubuntu20.04_amd64.deb

安装完成后,进入应用程序,打开它,AppArmor策略错误不再出现,但仍无法使用root用户进行连接。
然后,尝试使用第二种方法创建的凭据进行连接,一切正常。

MySQL Workbench connected fine in Ubuntu 20.04