mysql - 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器

标签 mysql ruby-on-rails-3

我是网络开发和 RoR 的新手 - super 菜鸟! - 我正在通过 lynda.com 参加在线 RoR 类(class)。很高兴加入 StackOverflow 社区,非常感谢您在障碍方面的帮助。

在我设置我的基本应用程序并成功运行一些迁移时,MySQL 和 localhost 工作了几个星期,但今天我在启动我的 Rails 服务器并在 http://localhost:3000/ 上查看时遇到了这个 MySQL 错误。在我的浏览器中:

Mysql2::错误(无法通过套接字 '/tmp/mysql.sock' (2) 连接到本地 MySQL 服务器):

我认为我没有更改任何与我的环境相关的内容,所以我想知道我是否需要更新 gems 或类似的简单内容?

我已经在 Google 和 StackOverflow 上搜索了几个小时,但仍然无法弄清楚这里出了什么问题以及如何解决它。其他解决方案似乎与新设置有关,而不是与莫名其妙中断的工作设置有关。

这里是一些上下文:


来 self 的 config/database.yml:

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: simple_cms_development
  pool: 5
  username: simple_cms
  password: XXXXXXXXX
  socket: /tmp/mysql.sock

我在几周前保存了一个命令行,当时 MySQL 和本地主机工作正常:

Last login: Mon Aug 15 21:34:23 on ttys000
sdemessieres$ cd sites/simple_cms
sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-08-22 22:28:01] INFO  WEBrick 1.3.1
[2011-08-22 22:28:01] INFO  ruby 1.8.7 (2009-06-12) [universal-darwin10.0]
[2011-08-22 22:28:01] INFO  WEBrick::HTTPServer#start: pid=66952 port=3000


Started GET "/" for 127.0.0.1 at Mon Aug 22 22:28:20 -0400 2011
  Processing by DemoController#index as HTML

等...(从这里开始工作正常)


但是今天我尝试了相同的命令并收到错误:

Last login: Mon Sep  5 12:13:22 on ttys000
sdemessieres$ cd sites/simple_cms
sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2011-09-05 12:33:09] INFO  WEBrick 1.3.1
[2011-09-05 12:33:09] INFO  ruby 1.8.7 (2009-06-12) [universal-darwin10.0]
[2011-09-05 12:33:09] INFO  WEBrick::HTTPServer#start: pid=11027 port=3000


Started GET "/" for 127.0.0.1 at Mon Sep 05 12:33:41 -0400 2011

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


Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.7ms)
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.7/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (6.3ms)

所以我回到训练中的数据库笔记,并尝试从我的命令行连接到 MySQL,它以前可以工作但现在不再工作了:

sdemessieres$ pwd
/Users/sdemessieres/sites/simple_cms
sdemessieres$ which mysql
/usr/local/mysql/bin/mysql
sdemessieres$ mysql --version
mysql  Ver 14.14 Distrib 5.5.13, for osx10.6 (i386) using readline 5.1
sdemessieres$ mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
sdemessieres$ 

一个 StackOverflow thread给了我这个线索,但它似乎只是强化了我的设置是正确的。

sdemessieres$ mysql_config |grep -- --socket
        --socket         [/tmp/mysql.sock]

正如我所说,我是一个完全的初学者,所以非常感谢任何帮助,谢谢!

最佳答案

这个问题有点过时了,但我在研究类似问题时遇到了它。使用 mysql_config 命令确认套接字位置和名称有助于解决我的问题。

我遇到了同样的错误,并调整了 config/database.yml 中的套接字入口路径以匹配我找到 .sock 文件的位置。

但是除了路径更改之外,我的 database.yml 文件中的套接字条目引用了 “mysql.sock”,与此问题相关的大多数讨论也是如此在我的搜索过程中。

mysql_config 的输出略有不同。它显示文件名为 “mysqld.sock”...注意 'd',而不是 mysql.sock。我错过了它,因为我专注于道路。

mysql 安装在只有 VPS 的服务器上,没有客户端,这可以解释套接字文件名的差异。

关于mysql - 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310967/

相关文章:

ruby-on-rails - 从 Rails 中的多个表中选择总和结果

ruby-on-rails - request.referer 有什么用?

MySQL:指复合键

mysql - SQL - 从没有列的计数总和中舍入小数

java - 应用程序如何从服务器检索小块数据?

mysql - 使用 ADO.NET 通过 SELECT 以原子方式执行 MySQL 的参数化查询

ruby-on-rails - Rails - Paperclip - 如何在保存前检查图像尺寸

mysql - 检查连接表中是否存在匹配的记录

mysql - 'Mysql :Class' 的未定义方法初始化

android - 如何在 Rails 3 应用程序中使用 Sencha Touch 2?