为 Ruby on Rails 应用程序设置 mysql 数据库时出现“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地 MySQL 服务器”错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19530089/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Getting "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'" error when setting up mysql database for Ruby on Rails app
提问by novicePrgrmr
I have been working on this all day long, and I need some help.
我一整天都在研究这个,我需要一些帮助。
I am trying to setup the mysql database for a RoR project I'm working on from github.
我正在尝试为我正在从 github 处理的 RoR 项目设置 mysql 数据库。
When I try to setup the db in the terminal, I get the following error:
当我尝试在终端中设置数据库时,出现以下错误:
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'
I have looked through 20 questions on SO, and none have been able to help me solve my problem.
我已经浏览了 20 个关于 SO 的问题,但没有一个能够帮助我解决我的问题。
The database is up and running, and the database.yml is set up too.
数据库已启动并正在运行,并且 database.yml 也已设置。
I am currently going a little mad... please... help...before it's too late.
我现在有点生气...请...帮助...在为时已晚之前。
UPDATE: I just looked at my installed gems, and for some reason it's showing mysql2
(see below)
更新:我刚刚查看了我安装的 gems,出于某种原因,它正在显示mysql2
(见下文)
Eric-Reas-MacBook:~ ericrea$ gem list
*** LOCAL GEMS ***
multi_json (1.8.2)
mysql2 (0.3.13)
net-sftp (2.1.2)
That seems a little odd to me...
这对我来说似乎有点奇怪......
Update: Here is what my database.yml is looking like:
更新:这是我的 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
UPDATE: Now getting weird errors when trying to reinstall mysql with homebrew (see below):
更新:现在尝试使用自制软件重新安装 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
回答by novicePrgrmr
I ended up figuring this one out.
我最终弄清楚了这一点。
I ran the following command:
我运行了以下命令:
$ mysqladmin variables | grep socket
Which returned:
哪个返回:
| performance_schema_max_socket_classes | 12 |
| performance_schema_max_socket_instances | 323 |
| socket | /tmp/mysql.sock
Then I checked the socket location in my database.yml file and it was wrong:
然后我检查了我的 database.yml 文件中的套接字位置,它是错误的:
It was wrong. After changing it to the right socket location everything worked like a charm. I hope this helps someone in the future.
那是错的。将其更改为正确的插座位置后,一切都像魅力一样。我希望这对未来的人有所帮助。
回答by NM Pennypacker
You have to start the mysql server
你必须启动mysql服务器
mysql.server start
and I think you may be looking for
我想你可能正在寻找
rake db:migrate
回答by Werner Bihl
Try and find your MySQL's my.cnf file. On a typical Ubuntu server it is at: /etc/mysql/my.cnf
尝试找到您的 MySQL 的 my.cnf 文件。在典型的 Ubuntu 服务器上,它位于:/etc/mysql/my.cnf
Open the file and make sure that the socket variable i.e. socket = /var/run/mysqld/mysqld.sock
打开文件并确保socket变量即socket = /var/run/mysqld/mysqld.sock
corresponds to your socket value in your apps' database.yml
对应于应用程序 database.yml 中的套接字值
回答by Praveen George
To solve this error first find your socket file, run the following commands in terminal
要解决此错误首先找到您的套接字文件,请在终端中运行以下命令
mysqladmin variables | grep socket
For me, this gives:
对我来说,这给出了:
| socket | /var/run/mysqld/mysqld.sock
Then, add a line to your config/database.yml:
然后,在 config/database.yml 中添加一行:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /var/run/mysqld/mysqld.sock
This will solve this problem.
这将解决这个问题。
回答by Rio Dermawan
Just simply run
只需简单地运行
mysql server.restart
mysql server.restart
to restart the server. This fixed this issue for me.
重新启动服务器。这为我解决了这个问题。
回答by borgo
I had similar issue (also using Brew and also getting PID file problem) with mysql and my PHP app. It started after I updated the OSX to Mavericks, probably the system update overrided my settings. Strangely, everything regarding mysql started to work again after I recreated /etc/php.ini and set proper socket address pointing to /tmp/mysql.sock. Maybe it'll help someone googling for this.
我在 mysql 和我的 PHP 应用程序中遇到了类似的问题(也使用 Brew 并且还有 PID 文件问题)。它在我将 OSX 更新为 Mavericks 后开始,可能是系统更新覆盖了我的设置。奇怪的是,在我重新创建 /etc/php.ini 并设置指向 /tmp/mysql.sock 的正确套接字地址后,有关 mysql 的一切都开始工作了。也许它会帮助某人使用谷歌搜索。