2011-12-01 242 views
2

我试图将我的rails 3应用程序连接到托管在godaddy服务器上的mysql数据库。我可以使用mysql客户端进行远程连接,但不能在运行应用程序时进行连接。我能够在本地连接mysql,但是当我尝试连接到我的远程托管的数据库中,我得到这个错误:无法将Ruby on Rails连接到远程mysql数据库

Mysql2::Error (Can't connect to MySQL server on '[host ip address]' (111))

这里是我的database.yml

development: 
    adapter: mysql2 
    encoding: utf8 
    host: host_ip_address 
    port: 3306 
    database: database_name 
    username: user_name 
    password: password 

我发展我的应用程序在Ubuntu机器上,如果有帮助。

+0

你试图搞乱或要求GoDaddy的关于您的插座设置? (/tmp/mysql.sock) –

+0

您不会使用套接字连接到远程数据库。 @Tony,它看起来最像是远程DB拒绝与本地主机的任何连接。你是如何通过mysql客户端连接到远程数据库的?你能用命令和响应更新你的问题吗?有一件事你可以尝试克服这个问题,就是建立一个到mysql主机的ssh隧道并通过它连接。 – pduey

+0

@pduey我使用mysql工作台连接时没有问题,我使用了相同的主机,端口#,用户名和密码。我从来没有使用过ssh隧道;我会做一些研究并尝试一下,并让我知道如果我到任何地方。 – Tony

回答

2

我猜测,根据我原来的评论,您的远程数据库拒绝任何连接,但本地主机。基于这个假设,这里有两种解决方案:

  1. 使用ssh隧道。有很多howto用于连接ssh隧道,例如,http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/

  2. 确保您的远程数据库正在接受远程连接。退房接受的答案下面的计算器线程Can't connect to MySQL server error 111

+0

非常感谢SSH隧道连接的工作。我必须在我的服务器上启用ssh连接,但它工作。 – Tony

2
  • 在你my.cnf,寻找这一行:

    bind-address = 127.0.0.1 
    

    ,并设置地址0.0.0.0

  • 访问mysql

    mysql -u root -p 
    
  • 不是创建所有的mysql服务器和授予权限的用户:

    CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass'; 
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;