Sequel Pro和MySQL连接失败

问题描述 投票:46回答:4

我刚在Homebrew上安装了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):找不到图片

无法弄清楚我错过了什么

mysql database-connection sequelpro
4个回答
114
投票

这是因为Sequel Pro尚未准备好进行新的用户登录,因为错误表明:没有驱动程序。非自制软件安装的快速修复:

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

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

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]';
  • 使用exit退出mysql shell并运行brew services restart mysql

应该管用。


my.cnf中

有关my.cnf文件的更多信息:For homebrew mysql installs, where's my.cnf?


7
投票
  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. 用例如重启mysql brew services restart mysql

5
投票

TL; DR:Sequel Pro自2016年以来已经死亡。不要因为工具而降级数据库。转到另一种工具。


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

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

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

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

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


2
投票

如果您通过[email protected]连接到MySQL,请确保您也重置其密码!

ALTER USER'root'@'127.0.0.1'用mysql_native_password识别BY'[密码]';

© www.soinside.com 2019 - 2024. All rights reserved.