在为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的所有内容都开始重新运行。 也许它会帮助谷歌搜索这个。