在为Ruby on Rails应用程序设置mysql数据库时出现“无法通过socket连接到本地MySQL服务器’/var/run/mysqld/mysqld.sock’”错误

我整天都在努力,我需要一些帮助。

我正在尝试为我正在从github工作的RoR项目设置mysql数据库。

当我尝试在终端中设置数据库时,我收到以下错误:

Eric-MacBook:~ eric$ cd ~/review_rocket Eric-MacBook:review_rocket eric$ rake db:setup Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 

我已经查看了20个关于SO的问题,但没有一个能够帮助我解决我的问题。

数据库已启动并正在运行,并且还设置了database.yml。

我现在有点生气了……拜托……帮助……为时已晚。

更新:我只看了我安装的gem,由于某种原因,它显示了mysql2 (见下文)

 Eric-Reas-MacBook:~ ericrea$ gem list *** LOCAL GEMS *** multi_json (1.8.2) mysql2 (0.3.13) net-sftp (2.1.2) 

这对我来说有点奇怪……

更新:这是我的database.yml看起来像:

 common: &common adapter: mysql2 encoding: utf8 reconnect: false pool: 5 user_name: xxxx password: xxxx socket: /var/run/mysqld/mysqld.sock development: <<: *common database: dev_review_rocket # Warning: The database defined as "money_tracker_test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *common database: test_review_rocket production: <<: *common database: prod_review_rocket 

更新:现在尝试使用自制软件重新安装mysql时出现奇怪的错误(见下文):

 $ brew install mysql ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.1 Already downloaded: /Library/Caches/Homebrew/mysql-5.6.13.mountain_lion.bottle.1.tar.gz ==> Pouring mysql-5.6.13.mountain_lion.bottle.1.tar.gz ==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea 2013-10-22 18:32:41 56901 [Note] InnoDB: FTS optimize thread exiting. 2013-10-22 18:32:41 56901 [Note] InnoDB: Starting shutdown... 2013-10-22 18:32:42 56901 [Note] InnoDB: Shutdown completed; log sequence number 1626067 2013-10-22 18:32:42 56901 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete Warning: mysql post_install failed. Rerun with `brew postinstall mysql`. ==> Caveats A "/etc/my.cnf" from another install may interfere with a Homebrew-built server starting up correctly. To connect: mysql -uroot To have launchd start mysql at login: ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents Then to load mysql now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist Or, if you don't want/need launchctl, you can just run: mysql.server start ==> Summary 🍺 /usr/local/Cellar/mysql/5.6.13: 9382 files, 354M Eric-Reas-MacBook:~ ericrea$ brew postinstall mysql ==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=ericrea 2013-10-22 18:33:22 57135 [Note] InnoDB: FTS optimize thread exiting. 2013-10-22 18:33:22 57135 [Note] InnoDB: Starting shutdown... 2013-10-22 18:33:23 57135 [Note] InnoDB: Shutdown completed; log sequence number 1626087 2013-10-22 18:33:23 57135 [Note] /usr/local/Cellar/mysql/5.6.13/bin/mysqld: Shutdown complete READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting These open issues may also help: https://github.com/mxcl/homebrew/issues/22021 https://github.com/mxcl/homebrew/pull/22480 

我结束了这个问题。

我运行了以下命令:

 $ mysqladmin variables | grep socket 

返回的是:

 | performance_schema_max_socket_classes | 12 | | performance_schema_max_socket_instances | 323 | | socket | /tmp/mysql.sock 

然后我检查了我的database.yml文件中的套接字位置,这是错误的:

那是错的。 将它更换到正确的sockets位置后,一切都像魅力一样。 我希望这能帮助将来的某个人。

你必须启动mysql服务器

 mysql.server start 

我想你可能正在寻找

 rake db:migrate 

尝试找到你的MySQL的my.cnf文件。 在典型的Ubuntu服务器上,它位于:/etc/mysql/my.cnf

打开文件并确保套接字变量ie socket = /var/run/mysqld/mysqld.sock

对应于应用程序的database.yml中的套接字值

只是简单地跑

mysql server.restart

重启服务器。 这为我解决了这个问题。

要解决此错误,请先找到您的套接字文件,在终端中运行以下命令

 mysqladmin variables | grep socket 

对我来说,这给了:

 | socket | /var/run/mysqld/mysqld.sock 

然后,在config / database.yml中添加一行:

 development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /var/run/mysqld/mysqld.sock 

这将解决这个问题。

我有类似的问题(也使用Brew,也得到PID文件问题)与mysql和我的PHP应用程序。 它是在我将OSX更新为Mavericks之后开始的,可能是系统更新覆盖了我的设置。 奇怪的是,在重新创建/etc/php.ini并设置指向/tmp/mysql.sock的正确套接字地址后,关于mysql的所有内容都开始重新运行。 也许它会帮助谷歌搜索这个。