Rails开发 - 无法连接到MySQL服务器 'localhost' (10061)

15

我是一位使用MySQL作为数据库的Rails开发新手。我可以成功地使用以下命令连接到MySQL:

    MySQL -u macDaddy -p

在命令提示符处,我知道用户是有效的并且MySQL正在运行。但是当我尝试运行时。
    rake db:schema:dump

在命令行中出现以下错误: rake aborted! 无法连接到MYSQL服务器“localhost”(10061)
我的database.yml文件有问题吗?以下是它的内容:
    development:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: bookmobile
      pool: 5
      username: macDaddy
      password: booklover
      host: localhost
      socket: mysql
      port: 3306

我还尝试过删除端口和套接字行,但仍然出现相同的错误。请帮忙解决。这是我的版本:

  • 在Windows 7上进行开发
  • MySQL Ver 14.14 distrib 5.5.21 for win64
  • 服务器版本为5.5.21
  • Rails 3.2.1

谢谢!


如果您指定127.0.0.1而不是localhost会发生什么? - DVG
mysqld 是否在 3306 端口监听?尝试运行 netstat -an | grep 3306 命令。如果你没有看到类似 *.3306 *.* LISTEN 的输出,那可能就是问题所在了。 - Jared Beck
7个回答

42

我的最佳猜测是你所指的机器是Windows,并启用了IPv6网络。因此,当你尝试访问localhost时,它会解析为"::1",这实际上是本地计算机,但是默认的MySQL安装通常将绑定地址设置为127.0.0.1,这将导致在这种设置下无法使用localhost。

你可以通过在命令提示符中运行ping localhost并查看是否得到以下响应来验证这一点:

 Reply from ::1: time<1ms

要解决这个问题,您可以更改配置以指定:

 host: 127.0.0.1

或者,您可以更改MySQL的配置以允许不同的绑定地址,例如将 bind-address 更改为 localhost 而不是 127.0.0.1。


作为新手,我花了太长时间才意识到你需要单独安装mysql社区服务器,因为它不包含在Ruby on Rails或Ruby Mine中。 - Nicolasome
此外,提到的配置文件位于config -> database.yml。 - Nicolasome

6

只需将您的主机更改为主机:127.0.0.1


6

database.yml 文件中的 host 值更改为 "127.0.0.1" 即可生效。或者,您可以修改电脑的 hosts 文件,在其中添加一项为 "localhost 127.0.0.1"。


5

我遇到了类似的错误,但是问题在于database.yml文件中缺少端口3306。当我添加了port: 3306后,问题得到了解决。


1
请确保在创建MySQL时设置了正确的端口号(例如:7777),请在“用户名”和“密码”后添加相应的端口号。
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: admin
  host: localhost
  port: 7777

在您的应用程序目录下的config目录中的database.yml文件中。


1

这是因为您的数据库服务器(mysql)没有设置密码,请尝试以下操作:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: bookmobile
  pool: 5
  username: macDaddy
  password:
  host: localhost
  socket: mysql
  port: 3306

0

请确保 MySQL 服务器正在运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接