2011-12-01 243 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;