【问题标题】:Can't connect to MySQL server on 'myhost.com' (4)无法连接到“myhost.com”上的 MySQL 服务器 (4)
【发布时间】:2023-03-15 06:20:02
【问题描述】:

我可以从 MySQL 客户端和终端连接到远程数据库。但是当尝试从 Rails 应用程序访问数据库时,我得到了这个错误:

Mysql2::Error (Can't connect to MySQL server on 'myhost.com' (4))

我的database.yml有如下配置用于开发:

adapter: mysql2
encoding: utf8
reconnect: false
host: myhost.com
port: 3306
database: the_database
pool: 5
username: myusername
password: mypassword
socket: /var/lib/mysql/mysql.sock

我已更改发布此问题的主持人的名称,如用户名、密码和数据库。

四处搜索,我可以看到不连接到数据库的不同原因,但没有一个与我的相似,并且代码为 4(这是错误代码吗?)。

我是 Rails 的新手,所以我不知道接下来应该怎么做才能修复它。我已经仔细检查了我的配置,甚至是套接字。我在服务器端亲自检查过,这是通往套接字的正确路径。

我不确定它是否相关,但该用户对该数据库具有只读访问权限。

我正在使用 Rails 3.2.8 和 Ruby 1.8.7。

【问题讨论】:

  • 除了本地机器上的 mysql 服务器外,您不能使用 unix 套接字通信。尝试删除 socket: /var/lib/mysql/mysql.sock 行。
  • 你能 ping myhost.com 吗?如果您通过 ssh 进入 myhost.com 并尝试使用相同的数据库、用户名和密码进行连接,是否可行?
  • @JoachimIsaksson,不幸的是它没有解决问题。
  • @VladtheImpala 我可以 ping myhost.com。但是当我尝试 ssh 时,它会超时。但我不认为超时是 Rails 应用程序中发生的问题,因为它会立即给出错误,而不是等待一段时间。你怎么看?
  • 你解决过这个问题吗?

标签: mysql ruby-on-rails ruby mysql2


【解决方案1】:

我遇到同样令人头疼的错误(错误是“无法连接到 MySQL 服务器(4))大约 3 周,最后我发现我的问题是基于防火墙规则。

解决方案是要求我的托管服务提供商打开端口 3306,但以 OUT 方式。

我使用的是 CPanel,这里的要点是我没有任何控制来管理 CPanel 防火墙。

不要试图期待,因为这是一个大解决方案,因为在配置中需要考虑很多事情,但是,嘿!我终于明白了,这完全是关于我的提供商的防火墙。

希望对某人有所帮助。

【讨论】:

    【解决方案2】:

    您同时使用host,它可以是远程主机或本地主机,但您也使用socket,它是位于服务器文件系统中的 UNIX 套接字的路径。 socket 是连接到本地数据库的首选方式。如果你不知道你的 mysql 套接字的路径,你可以在大多数情况下在 /etc/mysql/my.cnf 中的 mysql 配置文件中查找它。

    如果你想连接到远程主机,你应该检查你是否可以 ping 它,如果可以,你应该尝试像这样 telnet 端口:

    telnet <hostname> 3306
    

    这将允许您检查是否有守护程序正在侦听您尝试连接的端口。如果您无法连接到服务器并且您控制了服务器,则可能有一些防火墙规则限制了访问。它的 definitfly 不是 mysql 限制问题,因为主机限制会导致其他错误消息。

    【讨论】:

    • 你好@davidb。插座应该去掉插座线吗?我知道 MySQL 服务器中套接字的路径,这与我的本地机器不同。在服务器上它是/var/lib/mysql/mysql.sock,而在本地它是/tmp/mysql.sock。但我想我应该使用服务器端套接字,对吧?
    • 另外,我可以 ping 我的主机,当我尝试 telnet 时,它会打开一条奇怪的消息(转义字符是 '^]'。)然后,在另一行中,另一个奇怪的东西(5.5. 23-55?%!tHL#ijX??X0(w@vS|7
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2020-12-03
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多