Sequel Pro和MySQL连接失败

129

我刚刚从Homebrew在mac上安装了mysql

brew install mysql

mysql -V

mysql  Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)

从终端可以工作,我可以登录到mysql,但是从Sequel Pro中它说

enter image description here

无法连接到主机127.0.0.1,或请求超时。请确保地址正确且您具有必要的权限,或尝试增加连接超时时间(当前为10秒)。MySQL报错:无法加载认证插件'caching_sha2_password':dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2):未找到镜像。我无法确定我缺少什么。
7个回答

236

这是因为Sequel Pro还没有准备好新用户登录类型,就像错误所述:没有驱动程序。

mysql + homebrew

基本上你需要手动执行一些操作,但是你的数据库数据不会像下面的解决方案中那样被删除。

  • 进入my.cnf文件,在[mysqld]部分添加以下行:

    default-authentication-plugin=mysql_native_password

  • 从终端登录到mysql服务器:运行mysql -u root -p,然后在shell内执行此命令(将[password]替换为您的实际密码):

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

  • 从mysql shell中退出exit,然后运行brew services restart mysql

应该可以了。

快速修复(破坏性方法)

非homebrew安装的快速修复方法:

Apple Logo > System Preferences > MySQL > Initialize Database,然后输入新密码并选择“使用旧密码”

重启后,您应该能够连接。只在全新安装中使用它,否则可能会丢失数据库表。


my.cnf

my.cnf文件位于Unix/Linux上的 /etc/my.cnf。


替代方案

针对仍在与 Sequel Pro 问题作斗争的用户:Sequel Pro 是一个很棒的产品,但存在着大量未解决的问题,而且最近的发布版本可以追溯到 2016 年,也许寻找一些替代方案是个好主意。有一个名为 SequelAce 的 SequelPro 分支似乎非常稳定和最新,它保持了类似的功能、外观和感觉,同时不会出现旧版 Sequel Pro 的问题。

17
我在系统设置中找不到MySQL。 - Hattori Hanzō
2
谢谢您的解释,但我找不到my.cnf文件在我的机器上(macOS High Sierra 10.13.5)。 - Hattori Hanzō
2
如果没有这样的文件,您将需要创建一个:请查看此线程:https://dev59.com/umsz5IYBdhLWcg3wVGIy - Maciej Kwas
15
这在新安装的brew install mysql中运作良好,使用/usr/local/etc/my.cnf - mintwhip
10
我没有使用密码,所以我使用了 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; - 这对我有效。 - Vincent Tang
显示剩余18条评论

69
TL;DR:Sequel Pro自2016年以来已经停止更新。不要因为一个工具而降级你的数据库,转而使用替代工具。
更新2020:Sequel Pro官方已经死亡,但非官方版本仍然存在!你可以在这里找到“每夜构建”(即支持Mysql 8身份验证的版本):https://sequelpro.com/test-builds 更新2021:Sequel Ace是一个很好的类似替代品:https://github.com/Sequel-Ace/Sequel-Ace#installation(感谢Maciej Kwas的回答)。
所有其他解决方案都建议更改您的DB设置(使其不太安全,正如MySQL所宣传)以适应您正在使用的工具。我不能接受这样的解决方案。
我一直是 Sequel Pro 的忠实粉丝,甚至为它捐赠了。但是,尽管我热爱这个工具,但很抱歉它自 2016 年以来没有发布任何版本。你活在当下,我需要前进!
我发现的替代方案(来源于 https://dev59.com/nFUM5IYBdhLWcg3wMN59#55235533,感谢 @arcseldon)是 DBeaver,它支持 MySQL 8 的新身份验证(非遗留)方法。
PS. 在创建 MySQL 8 连接时,唯一需要注意的 是在工具端而不是 DB 端,您可能需要转到“Driver Properties”(稍后可以在 Edit Connection 中找到),并将 allowPublicKeyRetrieval 的值更改为 true
我需要这个来连接使用 Docker 创建的 MySQL 容器。要使 MySQL 的 IP 对于您生态系统中的任何其他应用程序(而不仅仅是此工具)可见,您应该在运行时或作为 ENV 传递 -e MYSQL_ROOT_HOST=%,或者创建一个新用户。

我相信 @Aidin 你给了我一个踩的理由只是因为我的答案没有解决 OP 的问题。这只是本地开发和本地设置 - 那又怎样呢?难道我真的必须离开我熟悉和喜欢使用的软件,只因为你这么说吗? - Maciej Kwas
8
请不要认为我是对你个人有意见@MaciejKwas。虽然我很感激你在这里提供更多的解释,但我仍然坚持我的投票。主要原因有三个:1)在现代软件开发中,保持开发和生产环境之间的不同设置并不被推荐。事实上,这是https://12factor.net/dev-prod-parity的X因素。2)人们可以使用这些工具来检查生产环境。您可以创建一个ssh隧道/代理,并通过GUI工具访问生产数据库。在这种情况下,降低数据库认证级别不是可选项。3)个人而言,我不珍视不适应变化和升级的态度。 - Aidin
1
我回到了一个MySQL项目,这个项目我已经有几年没有在本地运行过了,因为它一直非常稳定。但是我很难过地发现Sequel Pro已经停止更新了 :( - Catfish
在 DBeaver 中选择 MySQL +8 驱动程序,因为有多个驱动程序可供选择。在驱动程序属性中将 allowPublicKeyRetrieval 设置为 true 并保存。 - Peheje
真遗憾,因为Sequel Pro有一个很棒的图标。 - Matt Parkins
1
哇,你的Sequel Ace小贴士真是让我开心一整天!谢谢你! - undefined

20

谢谢您的消息,非常感激。 - Hattori Hanzō
终于了!等了好一会儿。 - Jonny

20
  1. 如果没有mysql配置,请将以下内容回显到~/.my.conf中。
[mysqld]
default-authentication-plugin=mysql_native_password
  1. 使用mysql -u root -p命令登录mysql
  2. 使用ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]';命令设置root用户密码,其中[PASSWORD]是你选择的密码。
  3. 使用brew services restart mysql命令重新启动mysql

如果你真的不在乎任何东西,而且它只是一个本地、开发、测试、练习、一次性、可抛弃的数据库,那么这是一个很好的解决方案。请阅读https://dev59.com/plUL5IYBdhLWcg3wmpDH#56509065,了解为什么因为工具而改变数据库是一个坏主意的解释。 - Aidin

5
如果您通过 root@127.0.0.1 连接到 MySQL,请确保也重置其密码!请执行以下命令:
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '[password]';

我得到了以下错误信息:ERROR 3009 (HY000): mysql.user 的列数不正确。期望值为50,实际上只有49。该数据库是在MySQL 80012版本创建的,当前运行的是80013版本。请使用mysql_upgrade命令来修复此错误。 - Chance Smith
请在终端上尝试执行以下命令:mysql_upgrade --force -uroot -p - Xeno
mysql_upgrade现已被弃用并且无法使用,请改用mysqld --upgrade=FORCE。 - ilovecookiez11
如果你真的不在乎任何事情,而且只是一个本地、开发、测试、练习、一次性、可抛弃的数据库,那么这是一个很好的解决方案。请阅读https://dev59.com/plUL5IYBdhLWcg3wmpDH#56509065,了解为什么因为工具而改变数据库是一个坏主意的解释。 - Aidin

5

这对我起作用了。如果您遇到以下错误:

无法连接到主机127.0.0.1,或请求超时。

请确保地址正确并且您具有必要的权限,或尝试增加连接超时时间(当前为10秒)。

MySQL 说:无法加载身份验证插件“caching_sha2_password”:dlopen(/usr/local/lib/plugin/caching_sha2_password.so,2):

请尝试此解决方案

enter image description here


1
运行得非常顺利。 - Jimmy Adaro
1
如果你真的不在乎任何事情,而且只是一个本地、开发、测试、练习、一次性、可抛弃的数据库,那么这是一个很好的解决方案。请阅读https://dev59.com/plUL5IYBdhLWcg3wmpDH#56509065,了解为什么因为工具而改变数据库是一个坏主意的解释。 - Aidin

2
如果有人遇到这个问题,并通过官方链接下载 .dmg 文件安装了 MySQL 版本大于 8 的版本,请参考 this guideline。如果将来该链接不可用,我在下面提供相同的详细信息。
此问题是由于您正在使用新的强密码加密功能引起的,这是 MySQL 8 中的一个新功能。如果您使用 .dmg 文件安装了 MySQL 8,则可以转到 系统偏好设置 > MySQL,然后单击 初始化数据库 输入密码并选择第二个选项 使用传统密码加密

1
使用旧式密码对我有效。谢谢! - Richard Witherspoon

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