Sequel Pro 和 MySQL 连接失败

Posted

技术标签:

【中文标题】Sequel Pro 和 MySQL 连接失败【英文标题】:Sequel Pro and MySQL connection failed 【发布时间】:2018-12-13 05:45:39 【问题描述】:

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

brew install mysql

mysql -V

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

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

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

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

MySQL 说:Authentication plugin 'caching_sha2_password' cannot be 加载:dlopen(/usr/local/lib/plugin/caching_sha2_password.so,2): 找不到图片

无法弄清楚我错过了什么

【问题讨论】:

【参考方案1】:

TL;DR:Sequel Pro 自 2016 年以来已死。不要因为工具而降级您的数据库。继续使用替代工具。

2020 年更新:Sequel Pro 正式死亡,但非正式地活着!您可以找到不存在此问题的“nightly”构建(即支持 Mysql 8 auth ) 在这里:https://sequelpro.com/test-builds

2021 年更新:Sequel Ace 是一个很好的类似活着的替代品:https://github.com/Sequel-Ace/Sequel-Ace#installation(感谢 Maciej Kwas 的回答)


这里的所有其他解决方案都建议更改您正在使用的工具的数据库设置(降低安全性,正如 MySQL 所宣传的那样)。这对我来说是不可接受的。

我一直是 Sequel Pro 的忠实粉丝,甚至向它捐款。但是,以我所有的热情和热爱,如果该工具没有任何版本since 2016,我很抱歉。 YOLO,我需要继续前进!

我找到的替代方案(来自https://***.com/a/55235533/2321594,感谢@arcseldon)是DBeaver,它支持 MySQL 8 的新身份验证(非传统)方法。

附言。 在工具方面,而不是在数据库方面的唯一技巧是,当您创建 MySQL 8 连接时,您可能需要转到“驱动程序属性”(稍后可以在编辑连接中找到)并打开allowPublicKeyRetrievaltrue 的值。

我需要它来连接到使用 Docker 创建的 MySQL 容器。为了让 MySQL 的 IP 对外部可见,对于您生态系统中的任何其他应用程序(不仅仅是这个工具),您应该在 MySQL 中创建一个新用户,或者在运行时传递-e MYSQL_ROOT_HOST=% 或作为 ENV .

【讨论】:

我相信@Aidin 你给了我一个反对票,只是因为我的回答没有解决 OP 问题。这只是一个本地开发和本地设置——那有什么意义呢?我真的必须离开我熟悉并且喜欢使用的软件,就因为你这么说吗? 请不要将其视为个人@MaciejKwas。尽管在这里提供了更多解释,我对此表示感谢,但我仍然支持我的投票。三个主要原因是: 1) 在现代软件开发中不建议在 dev/prod 之间保持不同的设置。事实上,它是 12factor.net/dev-prod-parity 的因子 X。 2)人们也可以使用这些工具来检查产品。您可以创建一个 ssh-tunnel/proxy 并通过 GUI 工具访问您的产品数据库。在这种情况下,不能选择降级 DB 身份验证。 3) 不适应变化和升级是我个人不重视的事情。 我要回到一个我已经有几年没有在本地运行过的 MySQL 项目了,b/c 它一直坚如磐石,我很伤心地发现 sequel pro 已经死了 :( 在 DBeaver 中也选择 MySQL +8 驱动程序,因为有多个驱动程序可供选择。在驱动程序属性中将 allowPublicKeyRetrieval 设置为 true 并保存。【参考方案2】:

如果有人遇到此问题并通过.dmg 文件安装MySQL version > 8;从官方链接下载的。在这种情况下,请使用this guideline。我将在下面添加相同的详细信息,以防将来无法使用该链接。

这个问题是因为你使用了新的Strong Password Encryption,这是 MySQL 8 中的一个新特性,如果你使用.dmg 文件安装 MySQL 8,你可以去System Preferences > MySQL 然后点击@987654327 @输入您的密码并选择第二个选项Use Legacy Password Encryption

【讨论】:

使用旧式密码对我有用。谢谢!【参考方案3】:

这是因为 Sequel Pro 尚未准备好进行新的用户登录,如错误所示:没有驱动程序。

mysql + 自制软件

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

转到 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]';

使用exit 退出mysql shell 并运行brew services restart mysql

应该可以。

快速修复(破坏性方法)

非自制安装的快速修复:

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

重启后应该可以连接了。仅在全新安装时执行此操作,否则您可能会丢失数据库表。


我的.cnf

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


替代方案

对于那些仍在为 Sequel Pro 问题苦苦挣扎的人:Sequel Pro 是一款很棒的产品,但有大量未解决的问题,而且上一次发布日期为 2016 年,或许寻找一些替代品是个好主意。有一个名为 SequelAce 的 SequelPro 分支,它似乎非常稳定和最新,它保持类似的功能、类似的外观和感觉,但同时它没有旧的 Sequel Pro 问题

【讨论】:

我在系统偏好设置中找不到 MySQL 感谢您的解释,但在我的机器上找不到my.cnf 文件(macOS High Sierra 10.13.5) 如果没有这样的文件,你将不得不创建一个:拜托,看看这个帖子:***.com/questions/7973927/… 这在使用 /usr/local/etc/my.cnf 的新 brew install mysql 上效果很好 我没有使用密码,所以我使用了ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; - 这对我有用【参考方案4】:

它对我有用。如果您收到此错误:

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

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

MySQL 说:Authentication plugin 'caching_sha2_password' cannot be 加载:dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2):

请试试这个解决方案

【讨论】:

工作就像一个魅力。 如果您真的不关心任何事情,它只是一个本地的、开发的、仅测试的、练习的、一次性的、一次性的数据库,这是一个很好的解决方案。阅读***.com/a/56509065,了解为什么因为工具而更改数据库是个坏主意。【参考方案5】:

Sequel Pro is officially dead 不再支持更新的 MySql 功能。然而,好消息是它已被Sequel Ace 取代,GitHub 和App store 上提供。该应用程序是免费的,看起来像是 Sequel Pro 的官方替代品 post was made by one of the collaborators of Sequel Pro。

附言。我决定将其发布为答案,因为其他人没有提到现在有 Sequel Pro 的最新替代品

【讨论】:

感谢您的消息,非常感谢。 终于!等了一会儿。【参考方案6】:
    假设您没有 mysql 配置,请将以下内容回显到 ~/.my.conf
[mysqld]
default-authentication-plugin=mysql_native_password
    使用mysql -u root -p登录mysql 使用ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[PASSWORD]'; 设置root 用户密码,其中[PASSWORD] 是您选择的密码。 重启mysql,例如brew services restart mysql

【讨论】:

如果您真的不关心任何事情,它只是一个本地的、开发的、仅测试的、练习的、一次性的、一次性的数据库,这是一个很好的解决方案。阅读***.com/a/56509065,了解为什么因为工具而更改数据库是个坏主意。【参考方案7】:

如果您通过 root@127.0.0.1 连接到 MySQL,请确保您也重置了密码!

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

【讨论】:

我收到:ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 50, found 49. Created with MySQL 80012, now running 80013. Please use mysql_upgrade to fix this error. 在终端上试试这个:mysql_upgrade --force -uroot -p mysql_upgrade 现已被弃用且无法使用,请改用 mysqld --upgrade=FORCE。 如果您真的不关心任何事情,它只是一个本地的、开发的、仅测试的、练习的、一次性的、一次性的数据库,这是一个很好的解决方案。阅读***.com/a/56509065,了解为什么因为工具而更改数据库是个坏主意。

以上是关于Sequel Pro 和 MySQL 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

Mac系统 mysql连接工具--sequel pro

工具Sequel Pro简介

当我尝试在 sequel pro 中运行此查询时出现错误 [重复]

Mysql 数据库未显示 localhost phpmyadmin (sequel pro)

在 Sequel Pro 中禁用严格模式

ruby sequel 和 postgreSQL - 客户端太多(连接)