Sequel Pro 和 MySQL 连接失败

Sequel Pro and MySQL connection failed

我刚刚通过 Homebrew

在 mac 上安装了 mysql
brew install mysql

mysql -V

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

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

Unable to connect to host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found

不知道我错过了什么

这是因为 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]';

  • 退出 mysql shell exit 和 运行 brew services restart mysql.

应该可以。

快速修复(破坏性方法)

非自制软件安装的快速修复:

Apple Logo > System Preferences > MySQL > Initialize Database,然后输入您的新密码和 select 'Use legacy password'

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


my.cnf

my.cnf 文件位于 Unix/Linux

上的 /etc/my.cnf

备选方案

对于那些仍在与 Sequel Pro 问题作斗争的人:Sequel Pro 是一个很棒的产品,但有大量未解决的问题,而且最后一个版本的日期是 2016 年,也许寻找一些替代品是个好主意。有一个名为 SequelPro 的分支 SequelAce 看起来非常稳定和最新,它保持相似的功能,相似的外观和感觉,但同时它没有老 Sequel 临问题

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

更改用户 'root'@'127.0.0.1' 由 mysql_native_password 通过 '[密码]' 识别;

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

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

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

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


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

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

我找到的替代方案(来自, thanks to @arcseldon) is DBeaver,它支持MySQL 8 的新身份验证(non-legacy)方法。

PS。唯一的技巧 在工具端,而不是数据库端 是当您创建 MySQL 8 连接时,您可能需要转到“驱动程序属性”(稍后可以找到在 Edit Connection 中)并将 allowPublicKeyRetrieval 的值更改为 true.

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

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

这个问题是因为您正在使用新的 Strong Password Encryption,这是 MySQL 8 中的一个新功能,如果您使用 .dmg 文件安装 MySQL 8 , 您可以转到 System Preferences > MySQL 然后单击 Initialize Database 输入您的密码和 select 第二个选项 Use Legacy Password Encryption.

Sequel Pro is officially dead and no longer supports newer MySql features. However, the good news is that it was replaced by Sequel Ace which is available on GitHub and App store. The app is free of charge and looks like official replacement for Sequel Pro as the post was made by one of the collaborators of Sequel Pro.

Ps。我决定 post 这个作为答案,因为其他人没有提到 Sequel Pro

现在有一个最新的替代品

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

Unable to connect to host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2):

请尝试这个解决方案