【发布时间】: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