Rails使用localhost而不是远程ip主机连接到mysql2

时间:2013-06-19 15:01:43

标签: ruby-on-rails mysql2

尝试使用带有rails的远程mysql数据库时,它会忽略database.yml文件中的host参数,而是尝试连接到本地服务器名称。我已经使用XXX和localservername清理了下面的信息。

以下是开发的database.yml条目:

development:
  adapter: mysql2
  encoding: utf8
  database: temp_admin_development
  username: XXX
  password: XXX
  host: 10.X.X.X
  port: 3306

以下是运行rake db:create:

时出现的错误
rake aborted!
Mysql2::Error: Access denied for user 'XXX'@'localservername' to database 'temp_admin_development': CREATE DATABASE `temp_admin_development` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`

以下是通过irb连接的手动尝试:     Mysql2 :: Client.new(:host =>“10.X.X.X”,:username =>“XXX”)

Mysql2::Error: Access denied for user 'XXX'@'localservername' (using >password: NO)
    from /home/XXX/.rvm/gems/ruby-1.9.3-p429/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `connect'
    from /home/XXX/.rvm/gems/ruby-1.9.3-p429/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in `initialize'
    from (irb):2:in `new'
    from (irb):2
    from /home/XXX/.rvm/rubies/ruby-1.9.3-p429/bin/irb:16:in `<main>'

请注意,它正在尝试连接到本地服务器名称并忽略要传递的主机参数。

1 个答案:

答案 0 :(得分:1)

我们发现了这个问题。主机实际上已被正确拉入。问题是我们必须指定一个已存在于mysql中的数据库,而不是新数据库。一旦指定了rake db:migrate就可以了。