我在关于这个主题的每一篇文章中都尝试过建议,但没有一个对我有用,所以我发布了自己的建议,以防有人发现我错过的任何内容。
我正在将 WordPress 站点迁移到 Digital Ocean 上的 LEMP(ubuntu、apache)堆栈实例,并且我需要通过 MySQL Workbench 或本地计算机上的类似工具临时访问数据库。我计划在迁移完成后将其关闭。但是我遇到了一个非常奇怪的问题,我无法找出原因。
如果我尝试使用
登录sql实例mysql -u user -h my.ip.address -p
我可以从本地计算机正常访问。
我还可以通过终端通过 SSH 连接到服务器本身,我已经在 ssh 配置文件中使用相同的 IP 地址以及我尝试用于工作台连接的相同用户和 ssh 密钥进行了设置。
但是,通过工作台上的 SSH 连接执行相同操作时,我不断收到错误:
Authentication failed, access denied.
Failed to connect to MySql at my.ip.address:3306 through ssh tunnel at [email protected] with user mysqluser
我为尝试纠正此问题所做的事情:
0.0.0.0
并重新启动服务器的mysqlmy.ip.address
并重新启动我可能遗漏了该清单上的一些东西,因为我觉得我已经尝试了一百万件事!
我什至在几天前设置的 LAMP 堆栈(不是 LEMP)上有一台不同的服务器,并且能够通过遵循相同的步骤来访问工作台上的 mysql 数据库,甚至尝试回溯和复制我所做的事情在 LAMP 服务器上,但不行。
我检查了mysql实例的netstats并匹配了端口和IP,但这不起作用,我确保SSH的端口是正确的,没有任何作用。
有人有什么建议吗?我一直在使用我能找到的所有“允许在数字海洋上远程连接 mysql”文章和问题,但没有任何效果。
这是我目前的工作台连接配置,但我已经尝试了我能想到的每一次迭代(重新用户、密码、IP 地址和端口)
SSH Hostname: my.ip.address
SSH Username: user
SSH Password: user-password (also tried empty, since i have a key)
SSH Key File: same key file i use to ssh on terminal
Mysql Hostname: 127.0.0.1 (also tried my.ip.address)
MySql Server Port: 3306 (also tried 33060)
Username: MySqlUser
Password: MySqlUser-Password (works when connecting to mysql via terminal)
我意识到这是一篇旧文章,但我在 Ubuntu 服务器上遇到了完全相同的问题。我的 sshd_config 中有“PasswordAuthentication no”和“PubKeyAuthentication yes”,并且我能够使用我的私钥连接到服务器,但是当我尝试使用相同的密钥使用 MySQL 客户端连接到数据库时,它总是会失败。对我来说,解决方案是使用 PuttyGen 生成新的 SSH 密钥。在顶部菜单中,转到“密钥”和“保存密钥文件的参数”。确保 ppk 版本为 2 而不是 3,并选择 ECDSA 作为密钥类型。
希望这对您或遇到这篇文章的其他人有所帮助。