【问题标题】:Can't connect to MySQL server on '127.0.0.1'无法连接到“127.0.0.1”上的 MySQL 服务器
【发布时间】:2012-02-08 10:44:32
【问题描述】:

我正在尝试克隆一个 repo 并在我的本地机器上运行它。我没有创建数据库,我正在尝试手动创建我的 database.yml 文件(我第一次这样做)。我不太确定我在做什么,并且不断收到有关连接到 MySql 服务器的错误。这是我的 database.yml 文件:

development:
  adapter: mysql
  host: 127.0.0.1
  database: db/app_development
  username: root
  password: 

我还尝试了 localhost 而不是 127.0.0.1,在尝试通过执行 'bundle exec rake db:create' 创建数据库时都给我错误...我收到此错误:

Can't connect to MySQL server on '127.0.0.1' (61)
Couldn't create database for {"username"=>"root", "adapter"=>"mysql", "database"=>"db/app_development", "host"=>"127.0.0.1", "password"=>nil}, charset: utf8, collation: utf8_unicode_ci

我知道我做错了什么,但我不能完全弄清楚它是什么。我需要启动mysql服务器还是什么?

这是我运行 mysqld_safe 时的输出:

120111 20:35:39 mysqld_safe Logging to '/usr/local/var/mysql/Matthew-Bermans-MacBook-Air.local.err'.
120111 20:35:39 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
120111 20:35:41 mysqld_safe mysqld from pid file /usr/local/var/mysql/Matthew-Bermans-MacBook-Air.local.pid ended

【问题讨论】:

  • 您确认详细信息正确吗? (您可以向我们展示您成功连接到数据库的终端会话吗?)
  • 你可以通过运行 mysql -uroot 直接在终端上连接到 MySQL 吗?也尝试“localhost”而不是 127.0.0.1
  • 从终端尝试 mysqld_safe 或 sudo mysqld_safe。您的数据库没有运行。
  • 我不知道细节是否正确......这可能是问题之一。我只是添加了我认为可行的任何内容,因为我还没有数据库...因为我无法运行 db:create...这是一种鸡和蛋的情况,我不知道该怎么做。我想我把步骤搞混了......我在做 mysql -uroot 时得到了这个:错误 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 您的服务器是否在监听该地址?端口 3306 的“netstat -ntap”显示什么

标签: mysql sql ruby-on-rails database macos


【解决方案1】:

试试:

development:
  adapter: mysql
  database: app_development
  username: root
  password: 
  socket: /var/lib/mysql/mysql.sock

然后使用 rake db:create 从 rails 创建它。

在 mysql 中做 create database db_name
然后上面:development的代码就可以让你使用了。

更新: Matthew 首先需要在他的 (Mac) 机器上安装 mySQL。
我将他指向http://dev.mysql.com/downloads/mysql/

【讨论】:

  • 不,我得到同样的错误:无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)我怎么知道要在数据库中放入什么:没有实际的字段创建了数据库?基本上,我只是克隆了这个 repo 并试图让它工作。我没有创建数据库,也没有正确的 database.yml 设置。让它发挥作用的分步过程是什么?我捆绑安装了所有东西,它通过了。
  • 我完全按照您的说明制作了 database.yml 文件。然后我做了 bundle exec rake db:create (needed bundle exec),但我得到了这个错误:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)。我不确定如何“在 mysql 中”
  • 在 yml 文件中添加了 socket: /var/lib/mysql/mysql.sock 并得到了这个错误:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.袜子'(2)
  • 马修,让我们来清理评论吧! (即删除聊天)。
【解决方案2】:

在您的 database.yml 中明确提及您的 port: 3306

如果不行就执行

netstat -tupln

并检查 MySQL 是否正在侦听端口 3306

【讨论】:

    【解决方案3】:

    首先,尝试执行以下命令以检查您是否从命令提示符连接到 mysql(不使用 Ruby on Rails)。

    mysql -u root
    

    如果无法连接你可能指定了密码。您需要记住它或重新安装 MySQL。如果可以,请创建您的数据库:

    create database app_development;
    

    最后但同样重要的是,从 database.yml 中删除前缀 'db/'。您不需要完整路径:

    database: app_development
    

    希望有帮助!

    【讨论】:

      【解决方案4】:

      如果您不介意使用什么数据库软件(我认为您没有指定是需要 MySQL 还是只是想让 repo 工作),您可以尝试使用 SQLite3。 SQLite3 不运行服务器或使用端口,因此您可能更容易进行设置。

      尝试模仿rails默认的database.yml,如下所示:

      # SQLite version 3.x
      #   gem install sqlite3
      #
      #   Ensure the SQLite 3 gem is defined in your Gemfile
      #   gem 'sqlite3'
      development:
        adapter: sqlite3
        database: db/development.sqlite3
        pool: 5
        timeout: 5000
      

      然后将gem 'sqlite3' 添加到您的Gemfile 并运行bundle install

      希望这会有所帮助!

      【讨论】:

        【解决方案5】:

        也可以通过更改 MySQL 版本来解决。使用 MySQL 5.5 开发的某些项目也有同样的问题,但我的 mac 中安装的版本是 MySQL 5.7,所以我不得不降级我的版本,它对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-22
          • 1970-01-01
          • 1970-01-01
          • 2015-11-24
          • 2014-12-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多