【问题标题】:Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock'Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock'
【发布时间】:2017-05-03 04:32:03
【问题描述】:

在运行rake db:migrate 时,我收到此错误:

Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我在这里查看了其他人的问题,但他们的解决方案都没有帮助我,例如:

解决方案一

mysql.server start

返回:

Starting MySQL

。错误!服务器退出而不更新PID文件(/usr/local/var/mysql/something.pid)。

解决方案二

mysqladmin variables | grep socket

返回:

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'

Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

补充说明: 我尝试使用自制软件重新安装 mysql,这是成功的,但我仍然收到相同的错误:

Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

【问题讨论】:

  • 检查mysql是否正在运行以及socket文件。如果 MySQL 正在运行但套接字文件不存在,则检查 my.cnf 是否将 mysql 配置为侦听该套接字。很有可能它正在侦听 MySQL 的默认端口 3306。
  • 当我尝试检查它是否正在运行时,我收到此错误:mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)' Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
  • 试试ps aux|grep mysql
  • 您也可以尝试top 并输入-o 然后输入vsize 这将按内存消耗排序,如果运行,MySQL 将接近顶部,因为与其他系统相比它消耗相当多的内存进程。
  • Mysql 不存在,所以它不能运行。我怎样才能让它开始?

标签: mysql ruby-on-rails macos


【解决方案1】:

我解决了!

首先,去database.yml

host: localhost 更改为host: 127.0.0.1

就是这样!

编辑:这暂时有效,但是当我今天重新启动计算机时,它开始抛出相同的错误。解决方法是从网站上安装 mysql,然后我的应用程序可以再次成功连接到 mysql。

【讨论】:

    【解决方案2】:

    env:rails5 mysql5.7.32

    作为补充,我也遇到了'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'的问题,但是报错的原因是socket文件引起的

    数据库.yml

    default: &default
      socket: /tmp/mysql.sock
    

    登录 mysql mysql -uroot -p 然后show variables like 'socket';

    +---------------+-----------------------------+
    | Variable_name | Value                       |
    +---------------+-----------------------------+
    | socket        | /var/run/mysqld/mysqld.sock |
    +---------------+-----------------------------+
    

    所以更改 database.yml

    default: &default
      socket: /var/run/mysqld/mysqld.sock # The line can also be deleted
    

    【讨论】:

    • 如果没有mysqld.sock文件怎么办?
    • @tagaism 我觉得这可能是另一个问题:'mysqld.sock does not exist?',我找到的解决方法其实是重启mysql服务重新建立socket。 serverfault.com/a/305056/420636
    • 感谢为我工作
    【解决方案3】:

    另一个答案,输入终端(zsh):

    ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
    

    然后

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    

    应该没问题。

    【讨论】:

    • 在您的解决方案中没有太多要学习的东西,因为您没有对此进行太多解释:(
    猜你喜欢
    • 1970-01-01
    • 2014-10-16
    • 2020-08-11
    • 2017-08-01
    • 2013-10-06
    • 2021-05-04
    • 2021-03-31
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多