【问题标题】:Cannot connect to MySQL server on [remote host] (where remote host is through ngrok)无法连接到 [远程主机] 上的 MySQL 服务器(远程主机通过 ngrok)
【发布时间】:2020-06-20 14:12:35
【问题描述】:

我目前正在尝试通过指南来使用 twilio 构建自动电话系统并将其集成到 MySQL 数据库中 (https://www.twilio.com/blog/connect-local-database-twilio-functions)。我遇到的问题是,在使用 ngrok 建立隧道后,我无法连接到 MySQL 服务器。

这是我正在运行的命令:

mysql --protocol=tcp --host=0.tcp.ngrok.io --port 18477 --user=root -p

当我按下运行时,终端会闲置几分钟,然后输出: ERROR 2003 (HY000): Can't connect to MySQL server on '0.tcp.ngrok.io' (110)

这是 ngrok 的截图:

我已按照https://linuxize.com/post/mysql-remote-access/ 中的步骤进一步了解如何设置远程访问 mysql。在文章的底部,它说这个错误通常意味着“端口 3306 没有打开,或者 MySQL 服务器没有监听 IP 地址。”然后我按照提供的链接检查了这两个。第二张图片看听力方面。

遇到此错误后,我尝试进行一些研究以查看是否可以找到问题所在。我的网络经验为零,因此除了客户端和服务器基础知识等之外,我什么都不懂。我遇到了 mysql 文档 (https://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html)。

它说,“如果服务器是用 skip_networking 系统变量启动的,它根本不会接受 TCP/IP 连接。”此外,它继续说,“如果服务器启动时将 bind_address 系统变量设置为 127.0.0.1,它将仅在环回接口上本地侦听 TCP/IP 连接,并且不会接受远程连接。”

我已经进行了我在各种文档和文章中看到的修改。下面是一些图片来展示我的设置:

下图是 MySQL Workbench 的截图。我的绑定地址对所有人开放,并且不限于本地连接(etc/mysql/mysql.conf.d 中的bind_address 被注释掉了)。此外,端口设置为 3306。最后,skip-networking 未被检查,因此 TCP/IP 可能发生。

为了确认 MySQL 正在侦听端口 3306,我使用 iTCP:3306 运行了这个 lsof 命令。我相信这告诉我mysql正在监听3306。我不确定USER是否指的是mysqld正在运行的用户,但如果是,我不确定这在root和其他的上下文中意味着什么用户。

我希望这看起来微不足道,但由于网络知识很少,我很容易忽略一些简单的事情。可以提供任何其他信息。

【问题讨论】:

  • 我还没有弄清楚。

标签: mysql tcp mysql-workbench ngrok


【解决方案1】:

当你通过 ngrok 设置的主机名连接到 MySql 时,不要使用 3306 端口,而是使用 ngrok 为你分配的端口。在您的示例中,它是 18447。

【讨论】:

    猜你喜欢
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2022-01-02
    相关资源
    最近更新 更多